[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: QUrl from a string (porting KUrl constructor or KCmdLineArgs::url)
From:       Kevin Kofler <kevin.kofler () chello ! at>
Date:       2014-10-17 23:51:32
Message-ID: m1sa25$8eu$1 () ger ! gmane ! org
[Download RAW message or body]

Hi,

I wrote:
> even after reading the porting guide and listening to David Faure's
> Akademy talk, I am still unsure about what the best way is to get a URL
> from a string, supporting:
> * absolute URL (with explicit scheme:// only)
> * absolute local file path
> * relative path: everything neither an absolute URL nor an absolute local
>   file path is assumed to be a relative path (relative to the local CWD)
> as both KUrl::KUrl(QString) and KCmdLineArgs::url did (in slightly
> different, but similar ways).
> 
> This is needed, e.g., when processing command-line arguments.
> 
> I see the following APIs available:
> * QUrl::QUrl(QString): accepts an absolute URL or a relative URL, but the
>                        documentation explicitly warns that it must not be
>                        used on absolute local file paths
> * QUrl::fromLocalFile: accepts an absolute local file path or a relative
>                        local file path, but does not accept a URL
> * QUrl::fromUserInput: seems closest to what I want, but assumes a web
>                        browser context and in particular assumes http://
>                        in situations that should really be treated as a
>                        relative path in most contexts
> 
> So, is there any function anywhere that does what I want? Or do I have to
> write something like:
> QDir::isAbsolutePath(str) ? QUrl::fromLocalFile(str) : QUrl(str)
> ? (And is QUrl(str) even OK for relative file paths or is there a
> difference between a relative URL and a relative local file path that I'm
> missing?)

So, Lukáš Tinkl answered me on #fedora-kde IRC. For posterity:
* Qt 5.4 introduces a new overload:
  http://doc-snapshot.qt-project.org/qt5-5.4/qurl.html#fromUserInput-2
  with a third parameter that solves this issue.
* This is how Okular solves the problem without hard-depending on Qt 5.4:
  http://quickgit.kde.org/?p=okular.git&a=commit&h=d98b4d920037422fe052ffa2633349d41fdbe02e

        Kevin Kofler

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic