[Development] QtDriveInfo module in Playground

Konstantin Ritt ritt.ks at gmail.com
Fri Mar 1 11:52:18 CET 2013


2013/3/1 André Somers <andre at familiesomers.nl>:
> Op 1-3-2013 10:22, Иван Комиссаров schreef:
>
> I don't think it's a good idea to try to fix QStorageInfo.
>
> The main argument is that QStorageInfo is a monitor+info provider, but
> monitor should depend on a DBus in Linux; however info provider doesn't
> require that. Also, monitor requires internal thread on Mac. My point is
> that in many cases, when you doesn't need monitor itself, it's too heavy to
> create such a huge object just to receive volume info.
>
> I don't find that a convincing argument. The implementation could be such,
> that the heavy machinery is only instantiated when somebody actually
> connects to the monitoring signals. We have connectNotify and
> disconnectNotify available for that in QObject.
>
> That's why i separated my solution into 2 different classes; so QtDriveInfo
> doesn't require external dependencies, like DBus.
>
> I think I would prefer to have the controls and notification signals
> directly on the QDriveInfo class itself. That seems to be more consistent
> with the rest of the Qt API, where I can't think of other examples of a
> separate controller class.

Consistent with what API? To me, QDriveInfo is just like QFileInfo
(incl. the ability to control the cache) and the monitor is just like
QFileSystemWatcher that can send you a changed/added/removed driveinfo
(ideally, the user will be notified *before* the drive has been
removed and will be able to decline dismounting from the slot --
that's easily doable on win, dunno about other systems).

>
> Next, QStorageInfo notification doesn't work for MingGW and Windows CE.
>
> Also QStorageInfo doesn't have internal caching.
>
> I am not saying that I think your classes look bad in any way. In fact, I
> think they look pretty neat!
> I do have my doubts about the refresh() method. Isn't there any way to
> automatically refresh without getting it too expensive?

Same approach as QFileInfo has.

regards,
Konstantin



More information about the Development mailing list