[Development] QtDriveInfo module in Playground
Konstantin Ritt
ritt.ks at gmail.com
Fri Mar 1 12:10:31 CET 2013
2013/3/1 Иван Комиссаров <abbapoh at gmail.com>:
>
> 01.03.2013, в 13:54, 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.
>
> The argument is that you can't use QStorageInfo class from QtCore itself or an application that uses only QtCore. You're forced to use external dependencies right now, while QDriveInfo class is must-have class for IO operations (you can check if there's enough space on a hard drive before copying file to if). Linking to DBus for that... hm...
Not a best example, I can find some better ones ;)
The three ones I need most often:
1. if (QDriveInfo(from) == QDriveInfo(to)) QFile::move(from, to); else
QFile::copy(from, to);
handles the symlinks, mounpoints and junction points as well
2. if (QDriveInfo(path).capabilities() & ... )
-- one can check if the specified path belongs to a volume with
filesystem that supports case sensitive names, symlinks, or hardlinks,
w/o having to *guess*.
3. if (QDriveInfo(path).type() == QDriveInfo::RemoteDrive) /* VFS */;
else /* Local */;
>>> 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.
>
> What about QFile/QFileInfo separation?:)
>
>>>
>>> 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?
>
> So far, i didn't find any solution for that...
>
>>
>> Thanks for your efforts so far!
>>
>> André
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
More information about the Development
mailing list