Review Request 120627: Remove kdelibs4support.

Kevin Kofler kevin.kofler at chello.at
Sat Oct 18 01:24:35 BST 2014


> On Okt. 17, 2014, 10:12 nachm., Kevin Kofler wrote:
> > main.cpp, line 132
> > <https://git.reviewboard.kde.org/r/120627/diff/1/?file=320275#file320275line132>
> >
> >     I think this now needs something like:
> >     QDir::isAbsolutePath(args.at(0)) ? QUrl::fromLocalFile(args.at(0)) : QUrl(args.at(0))
> >     
> >     QUrl really needs a static method for that, neither the constructor, nor fromLocalFile, nor fromUserInput do the right thing in this context. I'm going to ask on kde-core-devel if I'm missing something.
> >     
> >     This shows up so often in this function that it might be worth putting it into a helper function.

So, we should definitely put whatever we use in a wrapper function, because:
1. That way, it's easy to fix whatever we wrote if we run into some corner case where it doesn't work.
2. From Qt 5.4 onwards, one can write:
   QUrl::fromUserInput(arg, QDir::currentPath(), QUrl::AssumeLocalFile)
   (see http://doc-snapshot.qt-project.org/qt5-5.4/qurl.html#fromUserInput-2)
   which should do exactly what we want. (Unfortunately, that overload is new in 5.4. Thanks to Lukáš Tinkl for pointing me to it.)

The exact code Qt 5.4 uses is:
https://qt.gitorious.org/qt/qtbase/commit/31ce6f50c679e61dc53f09ee1b1637918da38a82
If we're writing a function anyway, we may as well use that logic, as in:
```c++
QUrl urlFromArg(const QString& arg)
{
#if QT_VERSION >= 0x050400
    return QUrl::fromUserInput(arg, QDir::currentPath(), QUrl::AssumeLocalFile);
#else
    // Logic from QUrl::fromUserInput(QString, QString, UserInputResolutionOptions)
    QUrl testUrl = QUrl(arg, QUrl::TolerantMode);
    if (testUrl.isRelative() && !QDir::isAbsolutePath(arg)) {
        QFileInfo fileInfo(QDir::current(), arg);
        return QUrl::fromLocalFile(fileInfo.absoluteFilePath());
    }
    return QUrl::fromUserInput(arg);
#endif
}
```
(Okular is doing something similar, as pointed out by Lukáš.)

Please note that I definitely want AssumeLocalFile, even where we don't need to accept files that don't exist, because I don't want Kompare to do a hostname lookup if it's passed a nonexisting file, I think it doesn't make any sense to assume a URL if no http:// is given.


- Kevin


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/120627/#review68628
-----------------------------------------------------------


On Okt. 17, 2014, 9:38 nachm., Jeremy Whiting wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/120627/
> -----------------------------------------------------------
> 
> (Updated Okt. 17, 2014, 9:38 nachm.)
> 
> 
> Review request for kdelibs and Kevin Kofler.
> 
> 
> Repository: kompare
> 
> 
> Description
> -------
> 
> Change KUrl to QUrl.
> Use QLayout/QFrame instead of KVBox (seems broken though somehow)
> Use QFileDialog instead of KFileDialog.
> 
> 
> Diffs
> -----
> 
>   libdialogpages/viewpage.cpp 07bdba5e1edf55a6dcd02e5deef58d30c07660c2 
>   libdialogpages/viewsettings.h dbf6afe0d0c70e548e32dfc09391d67ef595cdba 
>   libdialogpages/viewsettings.cpp 5a69d0bd9a49f7a3881940c4ea8ad407be56adc1 
>   main.cpp 4132c8442f8546ee7d365051dda0e32196249217 
>   libdialogpages/diffpage.h 37490b1ebb245e9648530429da63a9240010dddd 
>   libdialogpages/diffpage.cpp 7800b486e023cffe41e1fa3e9e60781250ea4199 
>   libdialogpages/filespage.h 42afafcd0fc8bc0a01e32b79d414742937d791fb 
>   libdialogpages/filespage.cpp 6a87fe36abd57bdaa09b516de38969db6c6f2298 
>   libdialogpages/filessettings.h dc3306e34fe1b4eb7cb6a9d2b598f91932bedda0 
>   libdialogpages/filessettings.cpp 0e19dc00f22a2f6e9588bf2d110dbde682888472 
>   libdialogpages/pagebase.h 0cef46feaa2cc81deff12c2c5f739e6be6df1b49 
>   libdialogpages/pagebase.cpp ba1574aed7124ede49e1c5908a8fe693cf7bc5d3 
>   libdialogpages/viewpage.h b5b770d1441650564106e1cc7ef7e587f6ee142d 
>   komparepart/komparesplitter.cpp 8d496bf279caa7cb9a305c2d15131f591c48818d 
>   kompareurldialog.h dc50c588e70835ad9292da1baf5222f58f512f67 
>   kompareurldialog.cpp 7de050bc44770a79f8f7d789cabd95d6707a40f1 
>   libdialogpages/CMakeLists.txt 769a1154c56e8eb8aa42f1bc6d84e0f9a4154fd0 
>   libdialogpages/dialogpagesexport.h b2de57f6616739d353d4889ef4965ab07f1191aa 
>   komparenavtreepart/komparenavtreepart.cpp 3faceff78fbbd2f083cd0a7837c74f50fe543474 
>   komparepart/CMakeLists.txt 09b61e6ca0cdce391fc759be49a672a050cc16cd 
>   komparepart/kompare_part.h 24475f1b0ccf7fbeda56860a9a69955cd0b82808 
>   komparepart/kompare_part.cpp 4d40be0dedcfb91b77ee239de11188b328f8bc13 
>   komparepart/komparelistview.cpp 35bbab849d8b7938cba518e97a00ed50cae35612 
>   komparepart/kompareprefdlg.cpp 118485663390e9563a77741b490a9cdf8bf6d464 
>   komparepart/komparesaveoptionswidget.cpp 4c9acba6a7f9c6dda04130946faac37138422875 
>   CMakeLists.txt 38167c2099d0ea1600bd5a6893982e809902fa3a 
>   doc/index.docbook 578d12a41d9a6afed441ffd38c39bff16c096ab2 
>   interfaces/kompareinterface.h 53b19d944b2a4a65c14ea41b8f1c0997581933db 
>   kompare_shell.h 8549fcdc4d1536c58734f2bc3a78b9ebc42c6c5f 
>   kompare_shell.cpp dcc45513f3f9f5f94869046989b6b4f5b1c0995e 
>   komparenavtreepart/CMakeLists.txt 53e8e670e70629afac9197fc108d844733ec5c07 
> 
> Diff: https://git.reviewboard.kde.org/r/120627/diff/
> 
> 
> Testing
> -------
> 
> It builds and runs. The compare dialog ui looks squished though and doesn't resize like it used to, must be something I did wrong when porting away from KVBox
> 
> 
> Thanks,
> 
> Jeremy Whiting
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20141018/669f5028/attachment.htm>


More information about the kde-core-devel mailing list