Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or Customize?

2018-04-13 Thread Shantanu Tushar
It helps ThemeContext.qml to determine if there is already a "theme"
defined in the context and if that is using the dialog colors.

QVariant SoStronk::contextPropertyForQmlObject(QObject *o, QString name)
{
auto context = QQmlEngine::contextForObject(o);

if (!context) {
qWarning() <<
   "Context is null, maybe attempt to call
contextPropertyForQmlObject for non-QML object";
return "";
}

return context->contextProperty(name.toUtf8().data());
}

On 11 April 2018 at 20:32, Jérôme Godbout  wrote:
> Look nice, but what exactly does the function
> SoStronk.contextPropertyForQmlObject(obj, string) does ?
>
>
>
> 
> From: Shantanu Tushar 
> Sent: April 11, 2018 9:29 AM
> To: Jérôme Godbout
> Cc: Thomas Hartmann; interest@qt-project.org
>
> Subject: Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles
> or Customize?
>
> Hi,
>
> Thanks for the suggestion. I ended up implementing it like this-
>
> $ cat theme/v2/Theme.qml
> pragma Singleton
>
> import QtQuick 2.10
> import QtQuick.Window 2.3
>
> Item {
> visible: false
>
> GlassColors {
> id: glassColors
> }
>
> PlatinumColors {
> id: platinumColors
> }
>
> readonly property var colors: glassColors
> readonly property var dialogColors: platinumColors
> ...
> ...
> }
>
> $ cat theme/v2/ThemeContext.qml
> import QtQuick 2.10
>
> Item {
> id: root
> visible: false
>
> readonly property var _inheritedTheme:
> SoStronk.contextPropertyForQmlObject(root.parent, "theme")
> readonly property bool _inheritedDialogColors: _inheritedTheme &&
> _inheritedTheme.dialogColors ? true : false
>
> property bool dialogColors: false
> readonly property var colors: dialogColors ||
> _inheritedDialogColors ? Theme.dialogColors : Theme.colors
> }
>
> where contextPropertyForQmlObject is a C++ function which returns the
> value of a property under the context of the specified object.
> Its used like this-
>
> $ cat SoStronkStyle/Button.qml
> import QtQuick 2.10
> import QtQuick.Templates 2.3 as T
>
> import SoStronk.theme 0.2
>
> T.Button {
> id: control
>
> ThemeContext {
> id: theme
> }
> ...
> // access theme.colors.foregroundColor
>
> And whenever I create a dialog-
>
> ThemeContext {
> id: theme
> dialogColors: true
> }
>
> So then any Button accessing theme.colors will end up referring to
> dialogColors :)
>
>
> On 9 April 2018 at 21:35, Jérôme Godbout  wrote:
>> You could have a property inside the controler to select the proper theme
>> value with a fallback, your theme singleton would then need to have
>> different set of color.
>>
>>
>> Theme
>>
>> {
>>
>>id: component
>>
>>property var defaultTheme: panelTheme
>>
>>property var mainTheme: ...
>>
>>property var panelTheme: ...
>>
>>
>>   function getTheme(prop)
>>
>>   {
>>
>>  if(prop && component.hasOwnProperty(prop))
>>
>> return component[prop];
>>
>>  return component.defaultTheme;
>>
>>   }
>>
>> }
>>
>>
>> T.Button
>>
>> {
>>
>>    id: component
>>
>> color: Theme.getTheme(component.customTheme).backgroundColor
>>
>> }
>>
>>
>> // use style with default theme
>> Button
>> {
>> }
>>
>> // Button with theme color
>> Button
>> {
>> property string customTheme: 'mainTheme'
>> }
>>
>> As for loading a multiple different template I think it would be
>> impossible.
>>
>> 
>> From: Interest  on
>> behalf of Shantanu Tushar 
>> Sent: April 9, 2018 11:30 AM
>> To: Thomas Hartmann
>> Cc: interest@qt-project.org
>> Subject: Re: [Interest] QtQuick Controls 2 and Designer: Should I use
>> Styles
>> or Customize?
>>
>> Hi,
>>
>> I've been slowly implementing these suggestions and so far the results
>> have been great. My button style looks like this-
>>
>> import QtQuick 2.9
>> import QtQuick.Templates 2.1 as T
>>
>> import My.theme 0.2
>>
>> T.Button {
>> // Here i use properties like Theme.backgroundColor, Theme.textColor
>> etc
>> }
>>
>> However, I just hit a roadblock which deals with multiple styles in
>> the same application. Ou

Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or Customize?

2018-04-11 Thread Jérôme Godbout
Look nice, but what exactly does the function 
SoStronk.contextPropertyForQmlObject(obj, string) does ?



From: Shantanu Tushar 
Sent: April 11, 2018 9:29 AM
To: Jérôme Godbout
Cc: Thomas Hartmann; interest@qt-project.org
Subject: Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or 
Customize?

Hi,

Thanks for the suggestion. I ended up implementing it like this-

$ cat theme/v2/Theme.qml
pragma Singleton

import QtQuick 2.10
import QtQuick.Window 2.3

Item {
visible: false

GlassColors {
id: glassColors
}

PlatinumColors {
id: platinumColors
}

readonly property var colors: glassColors
readonly property var dialogColors: platinumColors
...
...
}

$ cat theme/v2/ThemeContext.qml
import QtQuick 2.10

Item {
id: root
visible: false

readonly property var _inheritedTheme:
SoStronk.contextPropertyForQmlObject(root.parent, "theme")
readonly property bool _inheritedDialogColors: _inheritedTheme &&
_inheritedTheme.dialogColors ? true : false

property bool dialogColors: false
readonly property var colors: dialogColors ||
_inheritedDialogColors ? Theme.dialogColors : Theme.colors
}

where contextPropertyForQmlObject is a C++ function which returns the
value of a property under the context of the specified object.
Its used like this-

$ cat SoStronkStyle/Button.qml
import QtQuick 2.10
import QtQuick.Templates 2.3 as T

import SoStronk.theme 0.2

T.Button {
id: control

ThemeContext {
id: theme
}
...
// access theme.colors.foregroundColor

And whenever I create a dialog-

ThemeContext {
id: theme
dialogColors: true
}

So then any Button accessing theme.colors will end up referring to
dialogColors :)


On 9 April 2018 at 21:35, Jérôme Godbout  wrote:
> You could have a property inside the controler to select the proper theme
> value with a fallback, your theme singleton would then need to have
> different set of color.
>
>
> Theme
>
> {
>
>id: component
>
>property var defaultTheme: panelTheme
>
>property var mainTheme: ...
>
>property var panelTheme: ...
>
>
>   function getTheme(prop)
>
>   {
>
>  if(prop && component.hasOwnProperty(prop))
>
> return component[prop];
>
>  return component.defaultTheme;
>
>   }
>
> }
>
>
> T.Button
>
> {
>
>id: component
>
> color: Theme.getTheme(component.customTheme).backgroundColor
>
> }
>
>
> // use style with default theme
> Button
> {
> }
>
> // Button with theme color
> Button
> {
> property string customTheme: 'mainTheme'
> }
>
> As for loading a multiple different template I think it would be impossible.
>
> ________________
> From: Interest  on
> behalf of Shantanu Tushar 
> Sent: April 9, 2018 11:30 AM
> To: Thomas Hartmann
> Cc: interest@qt-project.org
> Subject: Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles
> or Customize?
>
> Hi,
>
> I've been slowly implementing these suggestions and so far the results
> have been great. My button style looks like this-
>
> import QtQuick 2.9
> import QtQuick.Templates 2.1 as T
>
> import My.theme 0.2
>
> T.Button {
> // Here i use properties like Theme.backgroundColor, Theme.textColor etc
> }
>
> However, I just hit a roadblock which deals with multiple styles in
> the same application. Our designer has created two sets of theme
> colors - Glass and Dark, Glass it to be used on the "Main window" of
> our application and Dark is used on rest of the dialogs. See
> https://www.sostronk.com/assets/tilt-a780c798bf78e6c5.png
>
> Now, because Theme is a singleton, there is no way for me to define a
> different set of colors for a Dialog. Any suggestions on how to
> achieve this?
>
> Thanks,
>
> On 26 March 2018 at 19:37, Shantanu Tushar  wrote:
>> Hi Thomas,
>>
>> I've tried both your suggestions in a PoC project and it works! My
>> actual app will need some refactoring to get the ball rolling but I
>> think this will work fine.
>>
>> Thanks a lot,
>>
>>
>> On 16 March 2018 at 19:32, Thomas Hartmann  wrote:
>>> Hi,
>>>
>>>
>>> I would suggest solution number 1 (Creating a Custom Style).
>>>
>>>
>>> To get the designer to show your custom style you have to configure it in
>>> qtquickcontrols2.conf.
>>>
>>> You can do this in the editable combo box in the form editor if
>>> qtquickcontrols2.conf does exist.
>>>
>>> You can refer to the Qt  Quick Controls 2 Flat Style example
>>> (https://doc.qt.io/qt-5.1

Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or Customize?

2018-04-11 Thread Shantanu Tushar
Hi,

Thanks for the suggestion. I ended up implementing it like this-

$ cat theme/v2/Theme.qml
pragma Singleton

import QtQuick 2.10
import QtQuick.Window 2.3

Item {
visible: false

GlassColors {
id: glassColors
}

PlatinumColors {
id: platinumColors
}

readonly property var colors: glassColors
readonly property var dialogColors: platinumColors
...
...
}

$ cat theme/v2/ThemeContext.qml
import QtQuick 2.10

Item {
id: root
visible: false

readonly property var _inheritedTheme:
SoStronk.contextPropertyForQmlObject(root.parent, "theme")
readonly property bool _inheritedDialogColors: _inheritedTheme &&
_inheritedTheme.dialogColors ? true : false

property bool dialogColors: false
readonly property var colors: dialogColors ||
_inheritedDialogColors ? Theme.dialogColors : Theme.colors
}

where contextPropertyForQmlObject is a C++ function which returns the
value of a property under the context of the specified object.
Its used like this-

$ cat SoStronkStyle/Button.qml
import QtQuick 2.10
import QtQuick.Templates 2.3 as T

import SoStronk.theme 0.2

T.Button {
id: control

ThemeContext {
id: theme
}
...
// access theme.colors.foregroundColor

And whenever I create a dialog-

ThemeContext {
id: theme
dialogColors: true
}

So then any Button accessing theme.colors will end up referring to
dialogColors :)


On 9 April 2018 at 21:35, Jérôme Godbout  wrote:
> You could have a property inside the controler to select the proper theme
> value with a fallback, your theme singleton would then need to have
> different set of color.
>
>
> Theme
>
> {
>
>id: component
>
>property var defaultTheme: panelTheme
>
>property var mainTheme: ...
>
>property var panelTheme: ...
>
>
>   function getTheme(prop)
>
>   {
>
>  if(prop && component.hasOwnProperty(prop))
>
> return component[prop];
>
>  return component.defaultTheme;
>
>   }
>
> }
>
>
> T.Button
>
> {
>
>id: component
>
> color: Theme.getTheme(component.customTheme).backgroundColor
>
> }
>
>
> // use style with default theme
> Button
> {
> }
>
> // Button with theme color
> Button
> {
> property string customTheme: 'mainTheme'
> }
>
> As for loading a multiple different template I think it would be impossible.
>
> ________________
> From: Interest  on
> behalf of Shantanu Tushar 
> Sent: April 9, 2018 11:30 AM
> To: Thomas Hartmann
> Cc: interest@qt-project.org
> Subject: Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles
> or Customize?
>
> Hi,
>
> I've been slowly implementing these suggestions and so far the results
> have been great. My button style looks like this-
>
> import QtQuick 2.9
> import QtQuick.Templates 2.1 as T
>
> import My.theme 0.2
>
> T.Button {
> // Here i use properties like Theme.backgroundColor, Theme.textColor etc
> }
>
> However, I just hit a roadblock which deals with multiple styles in
> the same application. Our designer has created two sets of theme
> colors - Glass and Dark, Glass it to be used on the "Main window" of
> our application and Dark is used on rest of the dialogs. See
> https://www.sostronk.com/assets/tilt-a780c798bf78e6c5.png
>
> Now, because Theme is a singleton, there is no way for me to define a
> different set of colors for a Dialog. Any suggestions on how to
> achieve this?
>
> Thanks,
>
> On 26 March 2018 at 19:37, Shantanu Tushar  wrote:
>> Hi Thomas,
>>
>> I've tried both your suggestions in a PoC project and it works! My
>> actual app will need some refactoring to get the ball rolling but I
>> think this will work fine.
>>
>> Thanks a lot,
>>
>>
>> On 16 March 2018 at 19:32, Thomas Hartmann  wrote:
>>> Hi,
>>>
>>>
>>> I would suggest solution number 1 (Creating a Custom Style).
>>>
>>>
>>> To get the designer to show your custom style you have to configure it in
>>> qtquickcontrols2.conf.
>>>
>>> You can do this in the editable combo box in the form editor if
>>> qtquickcontrols2.conf does exist.
>>>
>>> You can refer to the Qt  Quick Controls 2 Flat Style example
>>> (https://doc.qt.io/qt-5.10/qtquickcontrols2-flatstyle-example.html).
>>>
>>> You can use QT_QUICK_CONTROLS_STYLE_PATH to specify additional paths that
>>> are used to lookup Qt Quick Controls 2 styles.
>>>
>>> You can also write your own QML plugin (2. Customizing a Control), but
>>> you
>>> have to create a Q

Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or Customize?

2018-04-09 Thread Jérôme Godbout
You could have a property inside the controler to select the proper theme value 
with a fallback, your theme singleton would then need to have different set of 
color.


Theme

{

   id: component

   property var defaultTheme: panelTheme

   property var mainTheme: ...

   property var panelTheme: ...


  function getTheme(prop)

  {

 if(prop && component.hasOwnProperty(prop))

return component[prop];

 return component.defaultTheme;

  }

}


T.Button

{

   id: component

color: Theme.getTheme(component.customTheme).backgroundColor

}

// use style with default theme
Button
{
}

// Button with theme color
Button
{
property string customTheme: 'mainTheme'
}

As for loading a multiple different template I think it would be impossible.


From: Interest  on behalf 
of Shantanu Tushar 
Sent: April 9, 2018 11:30 AM
To: Thomas Hartmann
Cc: interest@qt-project.org
Subject: Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or 
Customize?

Hi,

I've been slowly implementing these suggestions and so far the results
have been great. My button style looks like this-

import QtQuick 2.9
import QtQuick.Templates 2.1 as T

import My.theme 0.2

T.Button {
// Here i use properties like Theme.backgroundColor, Theme.textColor etc
}

However, I just hit a roadblock which deals with multiple styles in
the same application. Our designer has created two sets of theme
colors - Glass and Dark, Glass it to be used on the "Main window" of
our application and Dark is used on rest of the dialogs. See
https://www.sostronk.com/assets/tilt-a780c798bf78e6c5.png

Now, because Theme is a singleton, there is no way for me to define a
different set of colors for a Dialog. Any suggestions on how to
achieve this?

Thanks,

On 26 March 2018 at 19:37, Shantanu Tushar  wrote:
> Hi Thomas,
>
> I've tried both your suggestions in a PoC project and it works! My
> actual app will need some refactoring to get the ball rolling but I
> think this will work fine.
>
> Thanks a lot,
>
>
> On 16 March 2018 at 19:32, Thomas Hartmann  wrote:
>> Hi,
>>
>>
>> I would suggest solution number 1 (Creating a Custom Style).
>>
>>
>> To get the designer to show your custom style you have to configure it in
>> qtquickcontrols2.conf.
>>
>> You can do this in the editable combo box in the form editor if
>> qtquickcontrols2.conf does exist.
>>
>> You can refer to the Qt  Quick Controls 2 Flat Style example
>> (https://doc.qt.io/qt-5.10/qtquickcontrols2-flatstyle-example.html).
>>
>> You can use QT_QUICK_CONTROLS_STYLE_PATH to specify additional paths that
>> are used to lookup Qt Quick Controls 2 styles.
>>
>> You can also write your own QML plugin (2. Customizing a Control), but you
>> have to create a QML file for every control
>>
>> and you have to implement a full plugin/import. For these customized
>> controls to show up in the item library you have to provide a .metainfo
>> file. You can look at the origin Qt Quick Controls 2 implementation for
>> reference.
>>
>>
>> I hope this solves your issue.
>>
>>
>> Kind Regards,
>>
>> Thomas Hartmann
>>
>>
>>
>> ___
>> Interest mailing list
>> Interest@qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest
>>
>
>
>
> --
> Shantanu Tushar(UTC +0530)
> shantanu.io



--
Shantanu Tushar(UTC +0530)
shantanu.io
___
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
___
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest


Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or Customize?

2018-04-09 Thread Shantanu Tushar
Hi,

I've been slowly implementing these suggestions and so far the results
have been great. My button style looks like this-

import QtQuick 2.9
import QtQuick.Templates 2.1 as T

import My.theme 0.2

T.Button {
// Here i use properties like Theme.backgroundColor, Theme.textColor etc
}

However, I just hit a roadblock which deals with multiple styles in
the same application. Our designer has created two sets of theme
colors - Glass and Dark, Glass it to be used on the "Main window" of
our application and Dark is used on rest of the dialogs. See
https://www.sostronk.com/assets/tilt-a780c798bf78e6c5.png

Now, because Theme is a singleton, there is no way for me to define a
different set of colors for a Dialog. Any suggestions on how to
achieve this?

Thanks,

On 26 March 2018 at 19:37, Shantanu Tushar  wrote:
> Hi Thomas,
>
> I've tried both your suggestions in a PoC project and it works! My
> actual app will need some refactoring to get the ball rolling but I
> think this will work fine.
>
> Thanks a lot,
>
>
> On 16 March 2018 at 19:32, Thomas Hartmann  wrote:
>> Hi,
>>
>>
>> I would suggest solution number 1 (Creating a Custom Style).
>>
>>
>> To get the designer to show your custom style you have to configure it in
>> qtquickcontrols2.conf.
>>
>> You can do this in the editable combo box in the form editor if
>> qtquickcontrols2.conf does exist.
>>
>> You can refer to the Qt  Quick Controls 2 Flat Style example
>> (https://doc.qt.io/qt-5.10/qtquickcontrols2-flatstyle-example.html).
>>
>> You can use QT_QUICK_CONTROLS_STYLE_PATH to specify additional paths that
>> are used to lookup Qt Quick Controls 2 styles.
>>
>> You can also write your own QML plugin (2. Customizing a Control), but you
>> have to create a QML file for every control
>>
>> and you have to implement a full plugin/import. For these customized
>> controls to show up in the item library you have to provide a .metainfo
>> file. You can look at the origin Qt Quick Controls 2 implementation for
>> reference.
>>
>>
>> I hope this solves your issue.
>>
>>
>> Kind Regards,
>>
>> Thomas Hartmann
>>
>>
>>
>> ___
>> Interest mailing list
>> Interest@qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest
>>
>
>
>
> --
> Shantanu Tushar(UTC +0530)
> shantanu.io



-- 
Shantanu Tushar(UTC +0530)
shantanu.io
___
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest


Re: [Interest] QtQuick Controls 2 and Designer: Should I use Styles or Customize?

2018-03-26 Thread Shantanu Tushar
Hi Thomas,

I've tried both your suggestions in a PoC project and it works! My
actual app will need some refactoring to get the ball rolling but I
think this will work fine.

Thanks a lot,


On 16 March 2018 at 19:32, Thomas Hartmann  wrote:
> Hi,
>
>
> I would suggest solution number 1 (Creating a Custom Style).
>
>
> To get the designer to show your custom style you have to configure it in
> qtquickcontrols2.conf.
>
> You can do this in the editable combo box in the form editor if
> qtquickcontrols2.conf does exist.
>
> You can refer to the Qt  Quick Controls 2 Flat Style example
> (https://doc.qt.io/qt-5.10/qtquickcontrols2-flatstyle-example.html).
>
> You can use QT_QUICK_CONTROLS_STYLE_PATH to specify additional paths that
> are used to lookup Qt Quick Controls 2 styles.
>
> You can also write your own QML plugin (2. Customizing a Control), but you
> have to create a QML file for every control
>
> and you have to implement a full plugin/import. For these customized
> controls to show up in the item library you have to provide a .metainfo
> file. You can look at the origin Qt Quick Controls 2 implementation for
> reference.
>
>
> I hope this solves your issue.
>
>
> Kind Regards,
>
> Thomas Hartmann
>
>
>
> ___
> Interest mailing list
> Interest@qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>



-- 
Shantanu Tushar(UTC +0530)
shantanu.io
___
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest