[Interest] Fwd: Contributor agreement rundown

Till Oliver Knoll till.oliver.knoll at gmail.com
Thu Apr 19 10:45:56 CEST 2012


... and to the proper recipient again...


Anfang der weitergeleiteten E‑Mail:

> Von: Till Oliver Knoll <till.oliver.knoll at gmail.com>
> Datum: 19. April 2012 10:44:51 MESZ
> An: Nikos Chantziaras <realnc at gmail.com>
> Betreff: Re: [Interest] Contributor agreement rundown
> 
> 
> 
> Am 18.04.2012 um 22:02 schrieb Nikos Chantziaras <realnc at gmail.com>:
> 
>> Qt already detects the environment, but it's all kept private.  What I 
>> had in mind is exposing this to the user through QSysInfo when he needs 
>> to provide different behavior for Gnome, KDE, Xfce, and others. 
> 
> Can you give a practical use case where one wants to implement different behaviour depending on the desktop?
> 
> I'm just asking, because my gutt feeling tells me that this should be kept and handled internally.
> 
> For example: platform icons (for standard actions such as Open, Save, Close, Print...). Qt already has a mechanism (was it QIconFactory?) to create/get appropriate icons.
> 
> Example: order of OK, Cancel etc buttons in dialogs. There exists a Qt layout container which takes care of that.
> 
> Example: Standard button texts "Cancel" vs "Abort" and the like. I think there are button "roles" which already take care of that.
> 
> So what beyond these points do you have in mind? And even if there were such scenarios: wouldn't it be better to "solve this within Qt" (in the manner as the techniques above) instead of burdening that task upon the actual application?
> 
> Or do you want to, say, implement a "Show in File Explorer" functionality and "when I run under KDE, show my file in Foo File Explorer, but when under Gnome, show them in Bar File Explorer"?
> 
> (But then again, wouldn't it make more sense to add such a "Show in File Manager" functionality to QDesktopService instead?)
> 
> 
> So what's the concrete use-case you have in mind?
> 
>> QSysInfo currently provides the windowsVersion() and macVersion() 
>> routines,
> 
> To find out *at runtime* which OS version your application is running can be very useful in dynamically determining what platform-specific functionality is available, together with "resolving the necessary framework linking at runtime as well".
> 
> That is especially easy on OS X which supports "weak linking" (meaning: your application won't complain at dynamic link time if it doesn't find a functionality present only on 10.7 Lion and upwards, but it currently runs on 10.6.8 Snow Leopard). That works because in Objective-C you rather send "messages" to objects, rather than trying to resolve method addresses at runtime: in case it doesn't understand a message it throws an exception "message not understood" which you can actually catch at runtime, so your application doesn't die (I believe). 
> 
> Or you can test at runtime whether a given object understands that "message" (and if not, don't send it).
> 
> Or if you know in advance that a given object doesn't understand a given message, because you know that functionality is only available since a given release... that's where knowing on which OS release your code is running becomes very useful.
> 
> 
> In a C++ method call you would get an "unresolved address" or whatever system exception and your application is terminated by the OS. In such a case you would have to dynamically load the libraries and resolve the symbol adresses at runtime - just like Qt does that with the OpenGL library.
> 
>> and I wanted to extend it with desktopEnvironment() and a new 
>> enum DesktopEnvironment { Gnome, KDE, Xfce, /* ... */ }.  A 
>> DesktopEnvironmentVersion enum might also make sense.
> 
> It wouldn't probably harm to have it. I'm just saying that most use-cases should probably be used "within Qt itself" to properly handle the "look and feel" on a given desktop manager. And as mentioned above, there is already lots of support already (also for the standard file dialogs etc.).
> 
> Cheers, Oliver
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20120419/07079fc5/attachment.html>


More information about the Interest mailing list