Кастомные IconButton в Sailfish

IconButton в Silica всем хороши, но их банально мало, и если нужно задействовать что-то либо другое, приходится городить костылики. Вот мой, работает с SVG иконками, которые я брал из Fontawesome тут

Код QML:
  1. import QtQuick 2.0
  2. import Sailfish.Silica 1.0
  3.  
  4. id: clickIcon
  5.  
  6. signal clicked
  7. property string activeColor: Theme.highlightColor
  8. property string defaultColor: Theme.primaryColor
  9.  
  10. opacity: 0.6
  11.  
  12. fillMode: Image.PreserveAspectFit
  13.  
  14. sourceSize.width: width
  15. sourceSize.height: height
  16.  
  17. layer.effect: ShaderEffect {
  18. id: shaderItem
  19. property color color: clickMouseArea.pressed ? clickIcon.activeColor : clickIcon.defaultColor
  20.  
  21. fragmentShader: "
  22. varying mediump vec2 qt_TexCoord0;
  23. uniform highp float qt_Opacity;
  24. uniform lowp sampler2D source;
  25. uniform highp vec4 color;
  26. void main() {
  27. highp vec4 pixelColor = texture2D(source, qt_TexCoord0);
  28. gl_FragColor = vec4(mix(pixelColor.rgb/max(pixelColor.a, 0.00390625), color.rgb/max(color.a, 0.00390625), color.a) * pixelColor.a, pixelColor.a) * qt_Opacity;
  29. }
  30. "
  31. }
  32. layer.enabled: true
  33. layer.samplerName: "source"
  34.  
  35. id: clickMouseArea
  36. anchors.fill: parent
  37. onClicked: {
  38. clickIcon.clicked()
  39. }
  40. }
  41. }
Комментарии (0)

Нет комментариев. Ваш будет первым!

Copyright 2016-2024 NeoChapay