Review Request 120627: Remove kdelibs4support.
Kevin Kofler
kevin.kofler at chello.at
Sat Oct 18 01:37:50 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.
>
> Kevin Kofler wrote:
> 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.
Actually, we don't need the QFileInfo in this case. (Qt 5.4's QUrl uses it because it also checks existence.) So the function simplifies to:
```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)
return (QUrl(arg, QUrl::TolerantMode).isRelative() && !QDir::isAbsolutePath(arg))
? QUrl::fromLocalFile(QDir::current().absoluteFilePath(arg))
: QUrl::fromUserInput(arg);
#endif
}
```
- 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/a898a861/attachment.htm>
More information about the kde-core-devel
mailing list