<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/129394/">https://git.reviewboard.kde.org/r/129394/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On November 21st, 2016, 8:34 a.m. UTC, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  


<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://git.reviewboard.kde.org/r/129394/diff/1/?file=485431#file485431line84" style="color: black; font-weight: bold; text-decoration: underline;">filenamesearch/kded/filenamesearchmodule.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">84</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">            <span class="k">if</span> <span class="p">(</span><span class="n">urlPath</span><span class="p">.</span><span class="n">startsWith</span><span class="p">(</span><span class="n">dirUrl</span><span class="p">.</span><span class="n">path</span><span class="p">()))</span> <span class="p">{</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Well, if dirUrl looks like "filenamesearch:?search=file&url=file:///path/to/file" then dirUrl.path() is empty, and this code is incorrect (it should use the query item "url", not the path). What am I missing?</pre>
 </blockquote>



 <p>On November 21st, 2016, 9:45 p.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This is a big misunderstanding mainly by me. Emitted url should contains query with new path ?
for (const QString &file : files) {
        const QUrl url(file);
        if (!url.isLocalFile()) {
            continue;
        }
        const QString urlPath = url.path();
        for (const QUrl &dirUrl : m_searchUrls) {
            QUrlQuery urlQuery(dirUrl);
            QString str = urlQuery.queryItemValue(QStringLiteral("url"));
            if (urlPath.startsWith(QUrl(str).path())) {
                QUrl temp;
                temp.setScheme(QStringLiteral("filenamesearch"));
                urlQuery.removeQueryItem(QStringLiteral("url");
                urlQuery.addQueryItem(QStringLiteral('url"), url);
                temp.setQuery(urlQuery);
                fileList << temp;
            }
        }
    }</p></pre>
 </blockquote>





 <p>On November 21st, 2016, 11:01 p.m. UTC, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Maybe, but I'm still in the dark about something. How can KDirLister cope with listing such URLs? It wants a directory URL and files inside that directory. Such a filenamesearch URL doesn't look like it's a file inside a directory, in terms of paths. Ideally I would look into the code to understand what is being done but I'm short on time.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Does kio_filenamesearch really return items from listDir(), which have an empty path too, just like the listed directory? I would assume this breaks many things in KDirLister.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Please clarify with the dolphin people (or whoever wrote the filenamesearch KIO) about the URL structure, then it will be straightforward to do the URL conversions in this code.</p></pre>
 </blockquote>





 <p>On November 22nd, 2016, 5:45 a.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I'm invited Emmanuel, who knows? https://github.com/KDE/dolphin/blob/1710304e9ba926d2aec4226d00974b826f9bcbc0/src/kitemviews/kfileitemmodel.cpp#L123 url("filenamesearch:?search=file&url=file:///path/to/file") in slot https://github.com/KDE/dolphin/blob/1710304e9ba926d2aec4226d00974b826f9bcbc0/src/kitemviews/kfileitemmodel.cpp#L77 comes results</p></pre>
 </blockquote>





 <p>On November 22nd, 2016, 7:13 a.m. UTC, <b>Emmanuel Pescosta</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Peter wrote the filenamesearch slave.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Filenamesearch URLs are only used to initiate a search. The URL contains the search start-folder, the pattern used for matching and an optional 'check contents' query item which can be yes or no. The filenamesearch ioslave uses all this query items to perform the search. It recursively opens each folder via KCoreDirLister (starting with the start-folder of the filenamesearch URL) and iterates trough the item list of the directory, every matching item is then listed via <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">listEntry</code> by using the UDSEntry of the matching item (see 1). So kio_filenamesearch can only return items with an empty path if the underlying ioslave (local, smb, ftp, ...) returns items with an empty path.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">[1] https://github.com/KDE/kio-extras/blob/master/filenamesearch/kio_filenamesearch.cpp#L103</p></pre>
 </blockquote>





 <p>On November 22nd, 2016, 7:31 a.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I and David, i guess, it's not clear how KDirlister handles url with queries, i'm searching for this code, but i don't found it.</p></pre>
 </blockquote>





 <p>On November 22nd, 2016, 7:45 a.m. UTC, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Ah but then KDirLister never sees that URL with a query in it, it's only used for the app->slave communication (listDir).
   (don't look for handling of queries in kdirlister, there isn't any. kdirlister thinks of dirs with items in them, that's it).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">And to make things more confusing, I wasn't talking about the KDirLister used by the slave itself (this is rather unusual and could be much more optimized by using KIO::listDir directly; KDirLister is the backend for views, it puts items into a cache and keeps watching them to mark them as dirty so it knows to update the cache when going to that directory again... all this is overkill for a kioslave who just wants to do a listDir).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">But that's a separate issue. For now let's forget about those KDirListers. The one that I was talking about was the one on the Dolphin side, that one that triggers the listDir in filenamesearch itself in the first place. I think what's happening is that it lists filenamesearch: and in return gets items with UDS_NAME=".zshrc" and UDS_URL="file:///home/dfaure/.zshrc" (random example), so it stores it as if it was filenamesearch:/.zshrc (it's a file inside the listed directory). Which opens the question about what happens if two search results have the same filename.
But if this analysis is correct, then the URL that the kded module has to emit is filenamesearch:/.zshrc.
Enable DEBUG_CACHE in kcoredirlister.cpp to see the structure of the items in there (I can help analyse the output).</p></pre>
 </blockquote>





 <p>On November 25th, 2016, 4:36 a.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250) url= QUrl("file:///home/toni/test") keep= false reload= false
kf5.kio.core.dirlister: Items in use:
kf5.kio.core.dirlister:     "trash:/" URL: QUrl("trash:/") rootItem: QUrl("trash:/") autoUpdates refcount: 1 complete: true "with 0 items."
kf5.kio.core.dirlister:     "file:///home/toni" URL: QUrl("file:///home/toni") rootItem: QUrl("file:///home/toni") autoUpdates refcount: 1 complete: true "with 47 items."
kf5.kio.core.dirlister: Directory data:
kf5.kio.core.dirlister:    "trash:/" 0 listers: ""
kf5.kio.core.dirlister:    "trash:/" 1 holders: " 0xf8b520"
kf5.kio.core.dirlister:    "file:///home/toni" 0 listers: ""
kf5.kio.core.dirlister:    "file:///home/toni" 1 holders: " 0xd56250"
kf5.kio.core.dirlister: Jobs:
kf5.kio.core.dirlister: Items in cache:
kf5.kio.core.dirlister: lister: KFileItemModelDirLister(0xd56250) silent= true
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250)  url= QUrl("file:///home/toni")
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250)
kf5.kio.core.dirlister: Iterating over dirs (QUrl("file:///home/toni"))
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250)  _url:  QUrl("file:///home/toni")
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250) item moved into cache: QUrl("file:///home/toni")
kf5.kio.core.dirlister: Listing directory: QUrl("file:///home/toni/test")
kf5.kio.core.dirlister: Entry now being listed by (KFileItemModelDirLister(0xd56250))
kf5.kio.core.dirlister: new entries for  QUrl("file:///home/toni/test")
kf5.kio.core.dirlister: Adding item:  QUrl("file:///home/toni/test/lister")
kf5.kio.core.dirlister: in QUrl("file:///home/toni/test") item: QUrl("file:///home/toni/test/lister")
kf5.kio.core.dirlister: finished listing QUrl("file:///home/toni/test")
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250) numJobs: 0
kf5.kio.core.dirlister: Items in use:
kf5.kio.core.dirlister:     "trash:/" URL: QUrl("trash:/") rootItem: QUrl("trash:/") autoUpdates refcount: 1 complete: true "with 0 items."
kf5.kio.core.dirlister:     "file:///home/toni/test" URL: QUrl("file:///home/toni/test") rootItem: QUrl("file:///home/toni/test") autoUpdates refcount: 1 complete: true "with 1 items."
kf5.kio.core.dirlister: Directory data:
kf5.kio.core.dirlister:    "trash:/" 0 listers: ""
kf5.kio.core.dirlister:    "trash:/" 1 holders: " 0xf8b520"
kf5.kio.core.dirlister:    "file:///home/toni/test" 0 listers: ""
kf5.kio.core.dirlister:    "file:///home/toni/test" 1 holders: " 0xd56250"
kf5.kio.core.dirlister: Jobs:
kf5.kio.core.dirlister: Items in cache:
kf5.kio.core.dirlister:     "file:///home/toni" rootItem: "file:///home/toni" with 47 items.
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250) url= QUrl("filenamesearch:?search=lister&url=file:///home/toni/test") keep= false reload= false
kf5.kio.core.dirlister: Items in use:
kf5.kio.core.dirlister:     "trash:/" URL: QUrl("trash:/") rootItem: QUrl("trash:/") autoUpdates refcount: 1 complete: true "with 0 items."
kf5.kio.core.dirlister:     "file:///home/toni/test" URL: QUrl("file:///home/toni/test") rootItem: QUrl("file:///home/toni/test") autoUpdates refcount: 1 complete: true "with 1 items."
kf5.kio.core.dirlister: Directory data:
kf5.kio.core.dirlister:    "trash:/" 0 listers: ""
kf5.kio.core.dirlister:    "trash:/" 1 holders: " 0xf8b520"
kf5.kio.core.dirlister:    "file:///home/toni/test" 0 listers: ""
kf5.kio.core.dirlister:    "file:///home/toni/test" 1 holders: " 0xd56250"
kf5.kio.core.dirlister: Jobs:
kf5.kio.core.dirlister: Items in cache:
kf5.kio.core.dirlister:     "file:///home/toni" rootItem: "file:///home/toni" with 47 items.
kf5.kio.core.dirlister: lister: KFileItemModelDirLister(0xd56250) silent= true
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250)  url= QUrl("file:///home/toni/test")
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250)
kf5.kio.core.dirlister: Iterating over dirs (QUrl("file:///home/toni/test"))
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250)  _url:  QUrl("file:///home/toni/test")
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250) item moved into cache: QUrl("file:///home/toni/test")
kf5.kio.core.dirlister: Listing directory: QUrl("filenamesearch:?search=lister&url=file:///home/toni/test")
kf5.kio.core.dirlister: Entry now being listed by (KFileItemModelDirLister(0xd56250))
kf5.kio.core.dirlister: new entries for  QUrl("filenamesearch:?search=lister&url=file:///home/toni/test")
kf5.kio.core.dirlister: Adding item:  QUrl("file:///home/toni/test/lister")
kf5.kio.core.dirlister: in QUrl("filenamesearch:?search=lister&url=file:///home/toni/test") item: QUrl("file:///home/toni/test/lister")
kf5.kio.core.dirlister: finished listing QUrl("filenamesearch:?search=lister&url=file:///home/toni/test")
kf5.kio.core.dirlister: KFileItemModelDirLister(0xd56250) numJobs: 0
kf5.kio.core.dirlister: Items in use:
kf5.kio.core.dirlister:     "trash:/" URL: QUrl("trash:/") rootItem: QUrl("trash:/") autoUpdates refcount: 1 complete: true "with 0 items."
kf5.kio.core.dirlister:     "filenamesearch:?search=lister&url=file:///home/toni/test" URL: QUrl("filenamesearch:?search=lister&url=file:///home/toni/test") rootItem: QUrl("filenamesearch:?search=lister&url=file:///home/toni/test") autoUpdates refcount: 1 complete: true "with 1 items."
kf5.kio.core.dirlister: Directory data:
kf5.kio.core.dirlister:    "trash:/" 0 listers: ""
kf5.kio.core.dirlister:    "trash:/" 1 holders: " 0xf8b520"
kf5.kio.core.dirlister:    "filenamesearch:?search=lister&url=file:///home/toni/test" 0 listers: ""
kf5.kio.core.dirlister:    "filenamesearch:?search=lister&url=file:///home/toni/test" 1 holders: " 0xd56250"
kf5.kio.core.dirlister: Jobs:
kf5.kio.core.dirlister: Items in cache:
kf5.kio.core.dirlister:     "file:///home/toni" rootItem: "file:///home/toni" with 47 items.
kf5.kio.core.dirlister:     "file:///home/toni/test" rootItem: "file:///home/toni/test" with 1 items.
kf5.kio.core.dirlister: ~KCoreDirLister KCoreDirLister(0xd56250)
kf5.kio.core.dirlister: lister: KCoreDirLister(0xd56250) silent= false
kf5.kio.core.dirlister: KCoreDirLister(0xd56250)  url= QUrl("filenamesearch:?search=lister&url=file:///home/toni/test")
kf5.kio.core.dirlister: KCoreDirLister(0xd56250)
kf5.kio.core.dirlister: Iterating over dirs (QUrl("filenamesearch:?search=lister&url=file:///home/toni/test"))
kf5.kio.core.dirlister: KCoreDirLister(0xd56250)  _url:  QUrl("filenamesearch:?search=lister&url=file:///home/toni/test")
kf5.kio.core.dirlister: KCoreDirLister(0xd56250) item moved into cache: QUrl("filenamesearch:?search=lister&url=file:///home/toni/test")
kf5.kio.core.dirlister: ~KCoreDirLister KCoreDirLister(0xf8b520)
kf5.kio.core.dirlister: lister: KCoreDirLister(0xf8b520) silent= false
kf5.kio.core.dirlister: KCoreDirLister(0xf8b520)  url= QUrl("trash:/")
kf5.kio.core.dirlister: KCoreDirLister(0xf8b520)
kf5.kio.core.dirlister: Iterating over dirs (QUrl("trash:/"))
kf5.kio.core.dirlister: KCoreDirLister(0xf8b520)  _url:  QUrl("trash:/")
kf5.kio.core.dirlister: KCoreDirLister(0xf8b520) item moved into cache: QUrl("trash:/")</p></pre>
 </blockquote>





 <p>On November 25th, 2016, 8:35 a.m. UTC, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">As I suspected. Look at this:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">kf5.kio.core.dirlister: Adding item:  QUrl("file:///home/toni/test/lister")
kf5.kio.core.dirlister: in QUrl("filenamesearch:?search=lister&url=file:///home/toni/test") item: QUrl("file:///home/toni/test/lister")</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">KDirLister can't find such an item later on, since its parent dir isn't file:///home/toni/test. This kind of code breaks then:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;"><div class="codehilite" style="background: #f8f8f8"><pre style="line-height: 125%"><span></span><span style="color: #008000; font-weight: bold">KFileItem</span> <span style="color: #666666">*</span><span style="color: #008000; font-weight: bold">KCoreDirListerCache</span><span style="color: #666666">:</span><span style="color: #AA22FF">:findByUrl</span><span style="color: #666666">(</span><span style="color: #008000; font-weight: bold">const</span> <span style="color: #008000; font-weight: bold">KCoreDirLister</span> <span style="color: #666666">*</span><span style="color: #008000; font-weight: bold">lister</span><span style="color: #666666">,</span> <span style="color: #008000; font-weight: bold">const</span> <span style="color: #008000; font-weight: bold">QUrl</span> <span style="color: #666666">&</span><span style="color: #008000; font-weight: bold">_u</span><span style="color: #666666">)</span> <span style="color: #008000; font-weight: bold">const</span>
{
    QUrl <span style="color: #008000">url(_u)</span>;
    <span style="color: #008000">url</span> <span style="color: #666666">=</span> <span style="color: #008000">url</span><span style="color: #666666">.</span>adjusted(QUrl<span style="color: #666666">::</span>StripTrailingSlash);
    const QUrl parentDir <span style="color: #666666">=</span> <span style="color: #008000">url</span><span style="color: #666666">.</span>adjusted(QUrl<span style="color: #666666">::</span>RemoveFilename <span style="color: #666666">|</span> QUrl<span style="color: #666666">::</span>StripTrailingSlash);
    DirItem <span style="color: #666666">*</span>dirItem <span style="color: #666666">=</span> dirItemForUrl(parentDir);
</pre></div>
</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I suppose KDirLister could keep yet another hash, mapping from every file to its parent dir, but that sounds expensive.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It would be much better if kio_filenamesearch would generate urls like filenamesearch:/lister for the item called "lister" to be a child of filenamesearch:/
(I would add a '/' to the root url for this to work)</p></pre>
 </blockquote>





 <p>On November 26th, 2016, 5:28 a.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">If we have file:///home/toni/test/lister and file:///home/toni/test/old/lister
filenamesearch:/lister filenamesearch:/old/lister ?</p></pre>
 </blockquote>





 <p>On November 26th, 2016, 8:23 a.m. UTC, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I suppose you don't want to see a subdir in the view, so no.
Rather filenamesearch:/lister_1 with a UDS_DISPLAY_NAME of "lister". Much like kio_trash does in the same situation. In any case it gets confusing for the user who has two items called "lister", in the search results, but I hope dolphin displays the full path somewhere ;-)</p></pre>
 </blockquote>





 <p>On December 1st, 2016, 5:29 a.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">in filenamesearch.cpp
foreach (const KFileItem &item, items) {
        if (itemValidator(item)) {
            KIO::UDSEntry entry = item.entry();
            QString name = item.name();
            entry.insert(KIO::UDSEntry::UDS_NAME, generateInternalName(name));
            entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, name);
            listEntry(entry);
        }
But in kded module we does't have intenal name i.e. we must keep it in sync ?
for (const QString &file : files) {
        const QUrl url(file);
        if (!url.isLocalFile()) {
            continue;
        }
        const QString urlPath = url.path();
        for (const QUrl &dirUrl : m_searchUrls) {
            QUrlQuery urlQuery(dirUrl);
            QString str = urlQuery.queryItemValue(QStringLiteral("url"));
            if (urlPath.startsWith(QUrl(str).path())) {
                QUrl temp;
                tmp.setScheme(QStringLiteral("filenamesearch"));
                tmp.setPath("lister_1"); // <-------------- here how we know it ?
                fileList << tmp;
            }
        }
    }</p></pre>
 </blockquote>





 <p>On December 4th, 2016, 3:43 p.m. UTC, <b>Anthony Fieroni</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">David, i will ship fix for kded module in 16.08, 16.12 and master since we are late for right solution.</p></pre>
 </blockquote>







</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I suppose the kioslave needs to tell the kded module (via DBus) about the mappings (file URLs -> search URLs), so that kded can store these (QHash) and use them.</p></pre>
<br />




<p>- David</p>


<br />
<p>On November 14th, 2016, 11:44 a.m. UTC, Anthony Fieroni wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Frameworks, Anthony Fieroni, David Faure, and Emmanuel Pescosta.</div>
<div>By Anthony Fieroni.</div>










<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kio-extras
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Bug is introduced in https://git.reviewboard.kde.org/r/129297/
When is fixed new kio-extras realease is needed for 16.08 branch.</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">No big ram usage but still not works as expected.
1. Perform search in Dolphin
2. Delete one result item
3. View must be update, but it's not</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>filenamesearch/kded/filenamesearchmodule.cpp <span style="color: grey">(3f9f582)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/129394/diff/" style="margin-left: 3em;">View Diff</a></p>






  </td>
 </tr>
</table>







  </div>
 </body>
</html>