51 QC_CustomControl=0xf00,
55 struct Android9PatchChunk
62 struct AndroidItemStateInfo
64 AndroidItemStateInfo():state(0){}
68 Android9PatchChunk chunkData;
73 enum AndroidDrawableType
87 AndroidDrawable(
const QVariantMap &drawable, ItemType itemType);
88 virtual ~AndroidDrawable();
89 virtual void initPadding(
const QVariantMap &drawable);
90 virtual AndroidDrawableType type()
const = 0;
91 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const = 0;
92 const QMargins &padding()
const;
93 virtual QSize size()
const;
94 static AndroidDrawable *fromMap(
const QVariantMap &drawable, ItemType itemType);
95 static QMargins extractMargins(
const QVariantMap &value);
96 virtual void setPaddingLeftToSizeWidth();
102 class AndroidColorDrawable:
public AndroidDrawable
105 AndroidColorDrawable(
const QVariantMap &drawable, ItemType itemType);
106 virtual AndroidDrawableType type()
const;
107 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
113 class AndroidImageDrawable:
public AndroidDrawable
116 AndroidImageDrawable(
const QVariantMap &drawable, ItemType itemType);
117 virtual AndroidDrawableType type()
const;
118 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
119 virtual QSize size()
const;
123 mutable QString m_hashKey;
127 class Android9PatchDrawable:
public AndroidImageDrawable
130 Android9PatchDrawable(
const QVariantMap &drawable, ItemType itemType);
131 virtual AndroidDrawableType type()
const;
132 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
134 static int calculateStretch(
int boundsLimit,
int startingPoint,
135 int srcSpace,
int numStrechyPixelsRemaining,
136 int numFixedPixelsRemaining);
137 void extractIntArray(
const QVariantList &values, QList<
int> &array);
139 Android9PatchChunk m_chunkData;
142 class AndroidGradientDrawable:
public AndroidDrawable
145 enum GradientOrientation
158 AndroidGradientDrawable(
const QVariantMap &drawable, ItemType itemType);
159 virtual AndroidDrawableType type()
const;
160 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
163 mutable QLinearGradient m_gradient;
164 GradientOrientation m_orientation;
168 class AndroidClipDrawable:
public AndroidDrawable
171 AndroidClipDrawable(
const QVariantMap &drawable, ItemType itemType);
172 ~AndroidClipDrawable();
173 virtual AndroidDrawableType type()
const;
174 virtual void setFactor(
double factor, Qt::Orientation orientation);
175 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
179 Qt::Orientation m_orientation;
180 const AndroidDrawable *m_drawable;
183 class AndroidStateDrawable:
public AndroidDrawable
186 AndroidStateDrawable(
const QVariantMap &drawable, ItemType itemType);
187 ~AndroidStateDrawable();
188 virtual AndroidDrawableType type()
const;
189 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
190 inline const AndroidDrawable *bestAndroidStateMatch(
const QStyleOption *opt)
const;
191 static int extractState(
const QVariantMap &value);
192 virtual void setPaddingLeftToSizeWidth();
193 QSize sizeImage(
const QStyleOption *opt)
const;
195 typedef std::pair<
int,
const AndroidDrawable *> StateType;
196 QList<StateType> m_states;
199 class AndroidLayerDrawable:
public AndroidDrawable
202 AndroidLayerDrawable(
const QVariantMap &drawable, QAndroidStyle::ItemType itemType);
203 ~AndroidLayerDrawable();
204 virtual AndroidDrawableType type()
const;
205 virtual void setFactor(
int id,
double factor, Qt::Orientation orientation);
206 virtual void draw(QPainter *painter,
const QStyleOption *opt)
const;
207 AndroidDrawable *layer(
int id)
const;
210 typedef std::pair<
int, AndroidDrawable *> LayerType;
211 QList<LayerType> m_layers;
214 Qt::Orientation m_orientation;
220 AndroidControl(
const QVariantMap &control, ItemType itemType);
221 virtual ~AndroidControl();
222 virtual void drawControl(
const QStyleOption *opt, QPainter *p,
const QWidget *w);
223 virtual QRect subElementRect(SubElement subElement,
224 const QStyleOption *option,
225 const QWidget *widget =
nullptr)
const;
226 virtual QRect subControlRect(
const QStyleOptionComplex *option,
228 const QWidget *widget =
nullptr)
const;
229 virtual QSize sizeFromContents(
const QStyleOption *opt,
230 const QSize &contentsSize,
231 const QWidget *w)
const;
232 virtual QMargins padding();
233 virtual QSize size(
const QStyleOption *option);
235 virtual const AndroidDrawable * backgroundDrawable()
const;
236 const AndroidDrawable *m_background;
241 class AndroidCompoundButtonControl :
public AndroidControl
244 AndroidCompoundButtonControl(
const QVariantMap &control, ItemType itemType);
245 virtual ~AndroidCompoundButtonControl();
246 virtual void drawControl(
const QStyleOption *opt, QPainter *p,
const QWidget *w);
247 virtual QMargins padding();
248 virtual QSize size(
const QStyleOption *option);
250 virtual const AndroidDrawable * backgroundDrawable()
const;
251 const AndroidDrawable *m_button;
254 class AndroidProgressBarControl :
public AndroidControl
257 AndroidProgressBarControl(
const QVariantMap &control, ItemType itemType);
258 virtual ~AndroidProgressBarControl();
259 virtual void drawControl(
const QStyleOption *option, QPainter *p,
const QWidget *w);
260 virtual QRect subElementRect(SubElement subElement,
261 const QStyleOption *option,
262 const QWidget *widget =
nullptr)
const;
264 QSize sizeFromContents(
const QStyleOption *opt,
265 const QSize &contentsSize,
266 const QWidget *w)
const;
268 AndroidDrawable *m_progressDrawable;
269 AndroidDrawable *m_indeterminateDrawable;
270 int m_secondaryProgress_id;
274 class AndroidSeekBarControl :
public AndroidProgressBarControl
277 AndroidSeekBarControl(
const QVariantMap &control, ItemType itemType);
278 virtual ~AndroidSeekBarControl();
279 virtual void drawControl(
const QStyleOption *option, QPainter *p,
const QWidget *w);
280 QSize sizeFromContents(
const QStyleOption *opt,
281 const QSize &contentsSize,
const QWidget *w)
const;
282 QRect subControlRect(
const QStyleOptionComplex *option, SubControl sc,
283 const QWidget *widget =
nullptr)
const;
285 AndroidDrawable *m_seekBarThumb;
288 class AndroidSpinnerControl :
public AndroidControl
291 AndroidSpinnerControl(
const QVariantMap &control, ItemType itemType);
292 virtual ~AndroidSpinnerControl(){}
293 virtual QRect subControlRect(
const QStyleOptionComplex *option,
295 const QWidget *widget =
nullptr)
const;
298 typedef QList<AndroidItemStateInfo *> AndroidItemStateInfoList;
304 virtual void drawPrimitive(PrimitiveElement pe,
const QStyleOption *opt, QPainter *p,
305 const QWidget *w =
nullptr)
const;
307 virtual void drawControl(QStyle::ControlElement element,
const QStyleOption *opt, QPainter *p,
308 const QWidget *w =
nullptr)
const;
310 virtual QRect subElementRect(SubElement subElement,
const QStyleOption *option,
311 const QWidget *widget =
nullptr)
const;
312 virtual void drawComplexControl(ComplexControl cc,
const QStyleOptionComplex *opt, QPainter *p,
313 const QWidget *widget =
nullptr)
const;
314 virtual SubControl hitTestComplexControl(ComplexControl cc,
const QStyleOptionComplex *opt,
315 const QPoint &pt,
const QWidget *widget =
nullptr)
const;
316 virtual QRect subControlRect(ComplexControl cc,
const QStyleOptionComplex *opt,
317 SubControl sc,
const QWidget *widget =
nullptr)
const;
319 virtual int pixelMetric(PixelMetric metric,
const QStyleOption *option =
nullptr,
320 const QWidget *widget =
nullptr)
const;
322 virtual QSize sizeFromContents(ContentsType ct,
const QStyleOption *opt,
323 const QSize &contentsSize,
const QWidget *w =
nullptr)
const;
325 virtual QPixmap standardPixmap(StandardPixmap standardPixmap,
const QStyleOption *opt =
nullptr,
326 const QWidget *widget =
nullptr)
const;
328 virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode,
const QPixmap &pixmap,
329 const QStyleOption *opt)
const;
331 int styleHint(StyleHint hint,
const QStyleOption *option =
nullptr,
const QWidget *widget =
nullptr,
332 QStyleHintReturn *returnData =
nullptr)
const;
334 virtual QPalette standardPalette()
const;
335 void polish(QWidget *widget);
336 void unpolish(QWidget *widget);
339 Q_DISABLE_COPY_MOVE(QAndroidStyle)
340 static ItemType qtControl(QStyle::ComplexControl control);
341 static ItemType qtControl(QStyle::ContentsType contentsType);
342 static ItemType qtControl(QStyle::ControlElement controlElement);
343 static ItemType qtControl(QStyle::PrimitiveElement primitiveElement);
344 static ItemType qtControl(QStyle::SubElement subElement);
345 static ItemType qtControl(
const QString &android);
348 typedef QHash<
int, AndroidControl *> AndroidControlsHash;
349 AndroidControlsHash m_androidControlsHash;
350 QPalette m_standardPalette;
351 AndroidCompoundButtonControl *checkBoxControl;