summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/Button.qml4
-rw-r--r--components/CheckBox.qml4
-rw-r--r--components/ChoiceList.qml4
-rw-r--r--components/ComboBox.qml2
-rw-r--r--components/ProgressBar.qml4
-rw-r--r--components/RadioButton.qml4
-rw-r--r--components/Slider.qml4
-rw-r--r--components/SpinBox.qml4
-rw-r--r--src/qstyleitem.cpp700
-rw-r--r--src/src.pro4
10 files changed, 385 insertions, 349 deletions
diff --git a/components/Button.qml b/components/Button.qml
index 1f8b11b2..772205dd 100644
--- a/components/Button.qml
+++ b/components/Button.qml
@@ -10,7 +10,7 @@ Components.Button {
property alias containsMouse: tooltip.containsMouse
property variant sizehint: backgroundItem.sizeFromContents(80, 6)
property bool defaultbutton: false
- property string hint
+ property string styleHint
TooltipArea {
// Note this will eat hover events
@@ -28,7 +28,7 @@ Components.Button {
hover: containsMouse
text: iconSource === "" ? "" : button.text
hasFocus: button.focus
- platformHint: button.hint
+ hint: button.styleHint
// If no icon, let the style do the drawing
activeControl: defaultbutton ? "default" : "f"
diff --git a/components/CheckBox.qml b/components/CheckBox.qml
index fc4aa5c2..13e36779 100644
--- a/components/CheckBox.qml
+++ b/components/CheckBox.qml
@@ -6,7 +6,7 @@ import "custom" as Components
Components.CheckBox {
id:checkbox
property string text
- property string hint
+ property string styleHint
property bool activeFocusOnPress: false
width: Math.max(110, backgroundItem.textWidth(text) + 40)
height: 20
@@ -20,7 +20,7 @@ Components.CheckBox {
text: checkbox.text
enabled: checkbox.enabled
hasFocus: checkbox.activeFocus
- styleHint: checkbox.hint
+ hint: checkbox.styleHint
}
}
diff --git a/components/ChoiceList.qml b/components/ChoiceList.qml
index eb809946..6216ec7b 100644
--- a/components/ChoiceList.qml
+++ b/components/ChoiceList.qml
@@ -8,7 +8,7 @@ Components.ChoiceList {
property int buttonHeight: backgroundItem.sizeFromContents(100, 18).height
property int buttonWidth: backgroundItem.sizeFromContents(100, 18).width
- property string hint
+ property string styleHint
height: buttonHeight
width: buttonWidth
@@ -24,7 +24,7 @@ Components.ChoiceList {
enabled: choicelist.enabled
text: currentItemText
hasFocus: choicelist.focus
- styleHint: choicelist.hint
+ hint: choicelist.styleHint
}
listItem: Item {
diff --git a/components/ComboBox.qml b/components/ComboBox.qml
index d6815585..e5e01b8f 100644
--- a/components/ComboBox.qml
+++ b/components/ComboBox.qml
@@ -62,7 +62,7 @@ Custom.BasicButton {
property alias hoveredIndex: popup.hoveredIndex
property alias selectedText: popup.selectedText
property alias hoveredText: popup.hoveredText
- property string hint
+ property string styleHint
background: StyleItem {
anchors.fill: parent
diff --git a/components/ProgressBar.qml b/components/ProgressBar.qml
index 14ba2ff7..e0a52cca 100644
--- a/components/ProgressBar.qml
+++ b/components/ProgressBar.qml
@@ -6,7 +6,7 @@ Components.ProgressBar {
property variant sizehint: backgroundItem.sizeFromContents(23, 23)
property int orientation: Qt.Horizontal
- property string hint
+ property string styleHint
height: orientation === Qt.Horizontal ? sizehint.height : 200
width: orientation === Qt.Horizontal ? 200 : sizehint.height
@@ -24,7 +24,7 @@ Components.ProgressBar {
maximum: indeterminate ? 0 : progressbar.maximumValue * factor
enabled: progressbar.enabled
horizontal: progressbar.orientation == Qt.Horizontal
- styleHint: progressbar.hint
+ hint: progressbar.styleHint
}
}
diff --git a/components/RadioButton.qml b/components/RadioButton.qml
index a3a3332a..845e6943 100644
--- a/components/RadioButton.qml
+++ b/components/RadioButton.qml
@@ -6,7 +6,7 @@ import "custom" as Components
Components.CheckBox {
id: radiobutton
property string text
- property string hint
+ property string styleHint
width: 110
height: 20
@@ -18,7 +18,7 @@ Components.CheckBox {
text: radiobutton.text
enabled: radiobutton.enabled
hasFocus: radiobutton.activeFocus
- styleHint: radiobutton.hint
+ hint: radiobutton.styleHint
}
Keys.onSpacePressed: {clicked(); checked = !checked; }
}
diff --git a/components/Slider.qml b/components/Slider.qml
index 694cbdd3..4ad0827f 100644
--- a/components/Slider.qml
+++ b/components/Slider.qml
@@ -16,7 +16,7 @@ Components.Slider{
height: orientation === Qt.Horizontal ? sizehint.height : 200
width: orientation === Qt.Horizontal ? 200 : sizehint.height
- property string hint;
+ property string styleHint;
groove: StyleItem {
anchors.fill:parent
@@ -29,7 +29,7 @@ Components.Slider{
horizontal: slider.orientation == Qt.Horizontal
enabled: slider.enabled
hasFocus: slider.focus
- styleHint: slider.hint
+ hint: slider.styleHint
activeControl: tickmarksEnabled ? tickPosition.toLowerCase() : ""
}
diff --git a/components/SpinBox.qml b/components/SpinBox.qml
index 6e6da0f8..9a6d0bc8 100644
--- a/components/SpinBox.qml
+++ b/components/SpinBox.qml
@@ -7,7 +7,7 @@ Components.SpinBox {
property variant __upRect;
property variant __downRect;
property int __margin: (height -16)/2
- property string hint
+ property string styleHint
// Align height with button
topMargin:__margin
@@ -75,7 +75,7 @@ Components.SpinBox {
(downPressed == 1 ? 1<<1 : 0) |
(upEnabled ? (1<<2) : 0) |
(downEnabled == 1 ? (1<<3) : 0)
- styleHint: spinbox.hint
+ hint: spinbox.styleHint
}
}
diff --git a/src/qstyleitem.cpp b/src/qstyleitem.cpp
index ed12cee2..6b1a2fc8 100644
--- a/src/qstyleitem.cpp
+++ b/src/qstyleitem.cpp
@@ -50,23 +50,35 @@
#include <QtCore/QStringBuilder>
+#ifdef Q_WS_MAC
+#include <Carbon/Carbon.h>
+extern CGContextRef qt_mac_cg_context(const QPaintDevice *); //qpaintdevice_mac.cpp
+static inline HIRect qt_hirectForQRect(const QRect &convertRect, const QRect &rect = QRect())
+{
+ return CGRectMake(convertRect.x() + rect.x(), convertRect.y() + rect.y(),
+ convertRect.width() - rect.width(), convertRect.height() - rect.height());
+}
+#endif
+
+
+
QStyleItem::QStyleItem(QDeclarativeItem *parent)
: QDeclarativeItem(parent),
- m_dummywidget(0),
- m_styleoption(0),
- m_type(Undefined),
- m_sunken(false),
- m_raised(false),
- m_active(true),
- m_selected(false),
- m_focus(false),
- m_on(false),
- m_horizontal(true),
- m_sharedWidget(false),
- m_minimum(0),
- m_maximum(100),
- m_value(0),
- m_paintMargins(0)
+ m_dummywidget(0),
+ m_styleoption(0),
+ m_type(Undefined),
+ m_sunken(false),
+ m_raised(false),
+ m_active(true),
+ m_selected(false),
+ m_focus(false),
+ m_on(false),
+ m_horizontal(true),
+ m_sharedWidget(false),
+ m_minimum(0),
+ m_maximum(100),
+ m_value(0),
+ m_paintMargins(0)
{
setFlag(QGraphicsItem::ItemHasNoContents, false);
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
@@ -110,291 +122,291 @@ void QStyleItem::initStyleOption()
switch (m_itemType) {
case Button: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionButton();
-
- QStyleOptionButton *opt = qstyleoption_cast<QStyleOptionButton*>(m_styleoption);
- opt->text = text();
- opt->features = (activeControl() == "default") ?
- QStyleOptionButton::DefaultButton :
- QStyleOptionButton::None;
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionButton();
+
+ QStyleOptionButton *opt = qstyleoption_cast<QStyleOptionButton*>(m_styleoption);
+ opt->text = text();
+ opt->features = (activeControl() == "default") ?
+ QStyleOptionButton::DefaultButton :
+ QStyleOptionButton::None;
+ }
break;
case ItemRow: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionViewItemV4();
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionViewItemV4();
- QStyleOptionViewItemV4 *opt = qstyleoption_cast<QStyleOptionViewItemV4*>(m_styleoption);
- opt->features = 0;
- if (activeControl() == "alternate")
- opt->features |= QStyleOptionViewItemV2::Alternate;
- }
+ QStyleOptionViewItemV4 *opt = qstyleoption_cast<QStyleOptionViewItemV4*>(m_styleoption);
+ opt->features = 0;
+ if (activeControl() == "alternate")
+ opt->features |= QStyleOptionViewItemV2::Alternate;
+ }
break;
case Splitter: {
- if (!m_styleoption) {
- m_styleoption = new QStyleOption;
- }
+ if (!m_styleoption) {
+ m_styleoption = new QStyleOption;
}
+ }
break;
case Item: {
- if (!m_styleoption) {
- m_styleoption = new QStyleOptionViewItemV4();
- }
- QStyleOptionViewItemV4 *opt = qstyleoption_cast<QStyleOptionViewItemV4*>(m_styleoption);
- opt->features = QStyleOptionViewItemV4::HasDisplay;
- opt->text = text();
- opt->textElideMode = Qt::ElideRight;
- QPalette pal = m_styleoption->palette;
- pal.setBrush(QPalette::Base, Qt::NoBrush);
- m_styleoption->palette = pal;
+ if (!m_styleoption) {
+ m_styleoption = new QStyleOptionViewItemV4();
}
+ QStyleOptionViewItemV4 *opt = qstyleoption_cast<QStyleOptionViewItemV4*>(m_styleoption);
+ opt->features = QStyleOptionViewItemV4::HasDisplay;
+ opt->text = text();
+ opt->textElideMode = Qt::ElideRight;
+ QPalette pal = m_styleoption->palette;
+ pal.setBrush(QPalette::Base, Qt::NoBrush);
+ m_styleoption->palette = pal;
+ }
break;
case Header: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionHeader();
-
- QStyleOptionHeader *opt = qstyleoption_cast<QStyleOptionHeader*>(m_styleoption);
- opt->text = text();
- opt->sortIndicator = activeControl() == "down" ?
- QStyleOptionHeader::SortDown
- : activeControl() == "up" ?
- QStyleOptionHeader::SortUp : QStyleOptionHeader::None;
- if (info() == QLatin1String("beginning"))
- opt->position = QStyleOptionHeader::Beginning;
- else if (info() == QLatin1String("end"))
- opt->position = QStyleOptionHeader::End;
- else if (info() == QLatin1String("only"))
- opt->position = QStyleOptionHeader::OnlyOneSection;
- else
- opt->position = QStyleOptionHeader::Middle;
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionHeader();
+
+ QStyleOptionHeader *opt = qstyleoption_cast<QStyleOptionHeader*>(m_styleoption);
+ opt->text = text();
+ opt->sortIndicator = activeControl() == "down" ?
+ QStyleOptionHeader::SortDown
+ : activeControl() == "up" ?
+ QStyleOptionHeader::SortUp : QStyleOptionHeader::None;
+ if (info() == QLatin1String("beginning"))
+ opt->position = QStyleOptionHeader::Beginning;
+ else if (info() == QLatin1String("end"))
+ opt->position = QStyleOptionHeader::End;
+ else if (info() == QLatin1String("only"))
+ opt->position = QStyleOptionHeader::OnlyOneSection;
+ else
+ opt->position = QStyleOptionHeader::Middle;
- }
+ }
break;
case ToolButton :{
- if (!m_styleoption)
- m_styleoption = new QStyleOptionToolButton();
-
- QStyleOptionToolButton *opt =
- qstyleoption_cast<QStyleOptionToolButton*>(m_styleoption);
- opt->subControls = QStyle::SC_ToolButton;
- opt->state |= QStyle::State_AutoRaise;
- opt->activeSubControls = QStyle::SC_ToolButton;
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionToolButton();
+
+ QStyleOptionToolButton *opt =
+ qstyleoption_cast<QStyleOptionToolButton*>(m_styleoption);
+ opt->subControls = QStyle::SC_ToolButton;
+ opt->state |= QStyle::State_AutoRaise;
+ opt->activeSubControls = QStyle::SC_ToolButton;
+ }
break;
case ToolBar: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionToolBar();
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionToolBar();
+ }
break;
case Tab: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionTabV3();
-
- QStyleOptionTabV3 *opt =
- qstyleoption_cast<QStyleOptionTabV3*>(m_styleoption);
- opt->text = text();
- opt->shape = info() == "South" ? QTabBar::RoundedSouth : QTabBar::RoundedNorth;
- if (activeControl() == QLatin1String("beginning"))
- opt->position = QStyleOptionTabV3::Beginning;
- else if (activeControl() == QLatin1String("end"))
- opt->position = QStyleOptionTabV3::End;
- else if (activeControl() == QLatin1String("only"))
- opt->position = QStyleOptionTabV3::OnlyOneTab;
- else
- opt->position = QStyleOptionTabV3::Middle;
-
- } break;
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionTabV3();
+
+ QStyleOptionTabV3 *opt =
+ qstyleoption_cast<QStyleOptionTabV3*>(m_styleoption);
+ opt->text = text();
+ opt->shape = info() == "South" ? QTabBar::RoundedSouth : QTabBar::RoundedNorth;
+ if (activeControl() == QLatin1String("beginning"))
+ opt->position = QStyleOptionTabV3::Beginning;
+ else if (activeControl() == QLatin1String("end"))
+ opt->position = QStyleOptionTabV3::End;
+ else if (activeControl() == QLatin1String("only"))
+ opt->position = QStyleOptionTabV3::OnlyOneTab;
+ else
+ opt->position = QStyleOptionTabV3::Middle;
+
+ } break;
case Menu: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionMenuItem();
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionMenuItem();
+ }
break;
case Frame: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionFrameV3();
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionFrameV3();
- QStyleOptionFrameV3 *opt = qstyleoption_cast<QStyleOptionFrameV3*>(m_styleoption);
- opt->frameShape = QFrame::StyledPanel;
- opt->lineWidth = 1;
- opt->midLineWidth = 1;
- }
+ QStyleOptionFrameV3 *opt = qstyleoption_cast<QStyleOptionFrameV3*>(m_styleoption);
+ opt->frameShape = QFrame::StyledPanel;
+ opt->lineWidth = 1;
+ opt->midLineWidth = 1;
+ }
break;
case TabFrame: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionTabWidgetFrameV2();
- QStyleOptionTabWidgetFrameV2 *opt = qstyleoption_cast<QStyleOptionTabWidgetFrameV2*>(m_styleoption);
- opt->shape = (info() == "South") ? QTabBar::RoundedSouth : QTabBar::RoundedNorth;
- if (minimum())
- opt->selectedTabRect = QRect(value(), 0, minimum(), height());
- opt->tabBarSize = QSize(minimum() , height());
- // oxygen style needs this hack
- opt->leftCornerWidgetSize = QSize(value(), 0);
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionTabWidgetFrameV2();
+ QStyleOptionTabWidgetFrameV2 *opt = qstyleoption_cast<QStyleOptionTabWidgetFrameV2*>(m_styleoption);
+ opt->shape = (info() == "South") ? QTabBar::RoundedSouth : QTabBar::RoundedNorth;
+ if (minimum())
+ opt->selectedTabRect = QRect(value(), 0, minimum(), height());
+ opt->tabBarSize = QSize(minimum() , height());
+ // oxygen style needs this hack
+ opt->leftCornerWidgetSize = QSize(value(), 0);
+ }
break;
case MenuItem:
case ComboBoxItem:
- {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionMenuItem();
+ {
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionMenuItem();
- QStyleOptionMenuItem *opt = qstyleoption_cast<QStyleOptionMenuItem*>(m_styleoption);
- opt->checked = false;
- opt->text = text();
- opt->palette = widget()->palette();
- }
+ QStyleOptionMenuItem *opt = qstyleoption_cast<QStyleOptionMenuItem*>(m_styleoption);
+ opt->checked = false;
+ opt->text = text();
+ opt->palette = widget()->palette();
+ }
break;
case CheckBox:
case RadioButton:
- {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionButton();
+ {
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionButton();
- QStyleOptionButton *opt = qstyleoption_cast<QStyleOptionButton*>(m_styleoption);
- if (!on())
- opt->state |= QStyle::State_Off;
- opt->text = text();
- }
+ QStyleOptionButton *opt = qstyleoption_cast<QStyleOptionButton*>(m_styleoption);
+ if (!on())
+ opt->state |= QStyle::State_Off;
+ opt->text = text();
+ }
break;
case Edit: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionFrameV3();
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionFrameV3();
- QStyleOptionFrameV3 *opt = qstyleoption_cast<QStyleOptionFrameV3*>(m_styleoption);
- opt->lineWidth = 1; // this must be non-zero
- }
+ QStyleOptionFrameV3 *opt = qstyleoption_cast<QStyleOptionFrameV3*>(m_styleoption);
+ opt->lineWidth = 1; // this must be non-zero
+ }
break;
case ComboBox :{
- if (!m_styleoption)
- m_styleoption = new QStyleOptionComboBox();
- QStyleOptionComboBox *opt = qstyleoption_cast<QStyleOptionComboBox*>(m_styleoption);
- opt->currentText = text();
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionComboBox();
+ QStyleOptionComboBox *opt = qstyleoption_cast<QStyleOptionComboBox*>(m_styleoption);
+ opt->currentText = text();
+ }
break;
case SpinBox: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionSpinBox();
-
- QStyleOptionSpinBox *opt = qstyleoption_cast<QStyleOptionSpinBox*>(m_styleoption);
- opt->frame = true;
- if (value() & 0x1)
- opt->activeSubControls = QStyle::SC_SpinBoxUp;
- else if (value() & (1<<1))
- opt->activeSubControls = QStyle::SC_SpinBoxDown;
- opt->subControls = QStyle::SC_All;
- opt->stepEnabled = 0;
- if (value() & (1<<2))
- opt->stepEnabled |= QAbstractSpinBox::StepUpEnabled;
- if (value() & (1<<3))
- opt->stepEnabled |= QAbstractSpinBox::StepDownEnabled;
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionSpinBox();
+
+ QStyleOptionSpinBox *opt = qstyleoption_cast<QStyleOptionSpinBox*>(m_styleoption);
+ opt->frame = true;
+ if (value() & 0x1)
+ opt->activeSubControls = QStyle::SC_SpinBoxUp;
+ else if (value() & (1<<1))
+ opt->activeSubControls = QStyle::SC_SpinBoxDown;
+ opt->subControls = QStyle::SC_All;
+ opt->stepEnabled = 0;
+ if (value() & (1<<2))
+ opt->stepEnabled |= QAbstractSpinBox::StepUpEnabled;
+ if (value() & (1<<3))
+ opt->stepEnabled |= QAbstractSpinBox::StepDownEnabled;
+ }
break;
case Slider:
case Dial:
+ {
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionSlider();
+
+ QStyleOptionSlider *opt = qstyleoption_cast<QStyleOptionSlider*>(m_styleoption);
+ opt->minimum = minimum();
+ opt->maximum = maximum();
+ // ### fixme - workaround for KDE inverted dial
+ opt->sliderPosition = value();
+ opt->singleStep = step();
+
+ if (opt->singleStep)
{
- if (!m_styleoption)
- m_styleoption = new QStyleOptionSlider();
-
- QStyleOptionSlider *opt = qstyleoption_cast<QStyleOptionSlider*>(m_styleoption);
- opt->minimum = minimum();
- opt->maximum = maximum();
- // ### fixme - workaround for KDE inverted dial
- opt->sliderPosition = value();
- opt->singleStep = step();
-
- if (opt->singleStep)
- {
- qreal numOfSteps = (opt->maximum - opt->minimum) / opt->singleStep;
-
- // at least 5 pixels between tick marks
- if (numOfSteps && (width() / numOfSteps < 5))
- opt->tickInterval = qRound((5*numOfSteps / width()) + 0.5)*step();
- else
- opt->tickInterval = opt->singleStep;
- }
- else // default Qt-components implementation
- opt->tickInterval = opt->maximum != opt->minimum ? 1200 / (opt->maximum - opt->minimum) : 0;
+ qreal numOfSteps = (opt->maximum - opt->minimum) / opt->singleStep;
- if (style() == QLatin1String("oxygen") && type == QLatin1String("dial"))
- opt->sliderValue = maximum() - value();
+ // at least 5 pixels between tick marks
+ if (numOfSteps && (width() / numOfSteps < 5))
+ opt->tickInterval = qRound((5*numOfSteps / width()) + 0.5)*step();
else
- opt->sliderValue = value();
- opt->subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;
- opt->tickPosition = (activeControl() == "below") ?
- QSlider::TicksBelow : (activeControl() == "above" ?
- QSlider::TicksAbove:
- QSlider::NoTicks);
- if (opt->tickPosition != QSlider::NoTicks)
- opt->subControls |= QStyle::SC_SliderTickmarks;
-
- opt->activeSubControls = QStyle::SC_None;
+ opt->tickInterval = opt->singleStep;
}
+ else // default Qt-components implementation
+ opt->tickInterval = opt->maximum != opt->minimum ? 1200 / (opt->maximum - opt->minimum) : 0;
+
+ if (style() == QLatin1String("oxygen") && type == QLatin1String("dial"))
+ opt->sliderValue = maximum() - value();
+ else
+ opt->sliderValue = value();
+ opt->subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;
+ opt->tickPosition = (activeControl() == "below") ?
+ QSlider::TicksBelow : (activeControl() == "above" ?
+ QSlider::TicksAbove:
+ QSlider::NoTicks);
+ if (opt->tickPosition != QSlider::NoTicks)
+ opt->subControls |= QStyle::SC_SliderTickmarks;
+
+ opt->activeSubControls = QStyle::SC_None;
+ }
break;
case ProgressBar: {
- if (QProgressBar *bar= qobject_cast<QProgressBar*>(widget())){
- bar->setMaximum(maximum());
- bar->setMinimum(minimum());
- if (maximum() != minimum())
- bar->setValue(1);
- }
- if (!m_styleoption)
- m_styleoption = new QStyleOptionProgressBarV2();
-
- QStyleOptionProgressBarV2 *opt = qstyleoption_cast<QStyleOptionProgressBarV2*>(m_styleoption);
- opt->orientation = horizontal() ? Qt::Horizontal : Qt::Vertical;
- opt->minimum = minimum();
- opt->maximum = maximum();
- opt->progress = value();
+ if (QProgressBar *bar= qobject_cast<QProgressBar*>(widget())){
+ bar->setMaximum(maximum());
+ bar->setMinimum(minimum());
+ if (maximum() != minimum())
+ bar->setValue(1);
}
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionProgressBarV2();
+
+ QStyleOptionProgressBarV2 *opt = qstyleoption_cast<QStyleOptionProgressBarV2*>(m_styleoption);
+ opt->orientation = horizontal() ? Qt::Horizontal : Qt::Vertical;
+ opt->minimum = minimum();
+ opt->maximum = maximum();
+ opt->progress = value();
+ }
break;
case GroupBox: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionGroupBox();
-
- QStyleOptionGroupBox *opt = qstyleoption_cast<QStyleOptionGroupBox*>(m_styleoption);
- opt->text = text();
- opt->lineWidth = 1;
- opt->subControls = QStyle::SC_GroupBoxLabel;
- if (sunken()) // Qt draws an ugly line here so I ignore it
- opt->subControls |= QStyle::SC_GroupBoxFrame;
- else
- opt->features |= QStyleOptionFrameV2::Flat;
- if (activeControl() == "checkbox")
- opt->subControls |= QStyle::SC_GroupBoxCheckBox;
-
- if (QGroupBox *group= qobject_cast<QGroupBox*>(widget())) {
- group->setTitle(text());
- group->setCheckable(opt->subControls & QStyle::SC_GroupBoxCheckBox);
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionGroupBox();
+
+ QStyleOptionGroupBox *opt = qstyleoption_cast<QStyleOptionGroupBox*>(m_styleoption);
+ opt->text = text();
+ opt->lineWidth = 1;
+ opt->subControls = QStyle::SC_GroupBoxLabel;
+ if (sunken()) // Qt draws an ugly line here so I ignore it
+ opt->subControls |= QStyle::SC_GroupBoxFrame;
+ else
+ opt->features |= QStyleOptionFrameV2::Flat;
+ if (activeControl() == "checkbox")
+ opt->subControls |= QStyle::SC_GroupBoxCheckBox;
+
+ if (QGroupBox *group= qobject_cast<QGroupBox*>(widget())) {
+ group->setTitle(text());
+ group->setCheckable(opt->subControls & QStyle::SC_GroupBoxCheckBox);
}
+ }
break;
case ScrollBar: {
- if (!m_styleoption)
- m_styleoption = new QStyleOptionSlider();
-
- QStyleOptionSlider *opt = qstyleoption_cast<QStyleOptionSlider*>(m_styleoption);
- opt->minimum = minimum();
- opt->maximum = maximum();
- opt->pageStep = horizontal() ? width() : height();
- opt->orientation = horizontal() ? Qt::Horizontal : Qt::Vertical;
- opt->sliderPosition = value();
- opt->sliderValue = value();
- opt->activeSubControls = (activeControl() == QLatin1String("up"))
- ? QStyle::SC_ScrollBarSubLine :
- (activeControl() == QLatin1String("down")) ?
- QStyle::SC_ScrollBarAddLine:
- QStyle::SC_ScrollBarSlider;
-
- opt->sliderValue = value();
- opt->subControls = QStyle::SC_All;
-
- QScrollBar *bar = qobject_cast<QScrollBar *>(widget());
- bar->setMaximum(maximum());
- bar->setMinimum(minimum());
- bar->setValue(value());
- }
+ if (!m_styleoption)
+ m_styleoption = new QStyleOptionSlider();
+
+ QStyleOptionSlider *opt = qstyleoption_cast<QStyleOptionSlider*>(m_styleoption);
+ opt->minimum = minimum();
+ opt->maximum = maximum();
+ opt->pageStep = horizontal() ? width() : height();
+ opt->orientation = horizontal() ? Qt::Horizontal : Qt::Vertical;
+ opt->sliderPosition = value();
+ opt->sliderValue = value();
+ opt->activeSubControls = (activeControl() == QLatin1String("up"))
+ ? QStyle::SC_ScrollBarSubLine :
+ (activeControl() == QLatin1String("down")) ?
+ QStyle::SC_ScrollBarAddLine:
+ QStyle::SC_ScrollBarSlider;
+
+ opt->sliderValue = value();
+ opt->subControls = QStyle::SC_All;
+
+ QScrollBar *bar = qobject_cast<QScrollBar *>(widget());
+ bar->setMaximum(maximum());
+ bar->setMinimum(minimum());
+ bar->setValue(value());
+ }
break;
default:
break;
@@ -486,25 +498,25 @@ QString QStyleItem::hitTest(int px, int py)
initStyleOption();
switch (m_itemType) {
case SpinBox :{
- subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_SpinBox,
- qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
- QPoint(px,py), 0);
- if (subcontrol == QStyle::SC_SpinBoxUp)
- return "up";
- else if (subcontrol == QStyle::SC_SpinBoxDown)
- return "down";
+ subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_SpinBox,
+ qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
+ QPoint(px,py), 0);
+ if (subcontrol == QStyle::SC_SpinBoxUp)
+ return "up";
+ else if (subcontrol == QStyle::SC_SpinBoxDown)
+ return "down";
- }
+ }
break;
case Slider: {
- subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_Slider,
- qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
- QPoint(px,py), 0);
- if (subcontrol == QStyle::SC_SliderHandle)
- return "handle";
+ subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_Slider,
+ qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
+ QPoint(px,py), 0);
+ if (subcontrol == QStyle::SC_SliderHandle)
+ return "handle";
- }
+ }
break;
case ScrollBar: {
subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_ScrollBar,
@@ -522,7 +534,7 @@ QString QStyleItem::hitTest(int px, int py)
return "down";
else if (subcontrol == QStyle::SC_ScrollBarAddPage)
return "downPage";
- }
+ }
break;
default:
break;
@@ -550,7 +562,7 @@ QSize QStyleItem::sizeFromContents(int width, int height)
// Macstyle adds some weird constants to buttons
return QSize(textWidth + 18, size.height() + 2);
#endif
-}
+ }
break;
case Tab:
size = qApp->style()->sizeFromContents(QStyle::CT_TabBarTab, m_styleoption, QSize(width,height), widget());
@@ -589,9 +601,9 @@ QSize QStyleItem::sizeFromContents(int width, int height)
}
#ifdef Q_WS_MAC
-// ### hack - With even heights, the text baseline is off on mac
-// if (size.height() %2 == 0)
-// size.setHeight(size.height() + 1);
+ // ### hack - With even heights, the text baseline is off on mac
+ // if (size.height() %2 == 0)
+ // size.setHeight(size.height() + 1);
#endif
return size;
}
@@ -611,7 +623,7 @@ int QStyleItem::pixelMetric(const QString &metric)
// On windows the tabbar paintmargin extends the overlap by one pixels
return 1 + qApp->style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, 0 , widget());
#else
- return qApp->style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, 0 , widget());
+ return qApp->style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, 0 , widget());
#endif
else if (metric == "tabhspace")
return qApp->style()->pixelMetric(QStyle::PM_TabBarTabHSpace, 0 , widget());
@@ -844,51 +856,51 @@ QRect QStyleItem::subControlRect(const QString &subcontrolString)
initStyleOption();
switch (m_itemType) {
case SpinBox:
- {
- QStyle::ComplexControl control = QStyle::CC_SpinBox;
- if (subcontrolString == QLatin1String("down"))
- subcontrol = QStyle::SC_SpinBoxDown;
- else if (subcontrolString == QLatin1String("up"))
- subcontrol = QStyle::SC_SpinBoxUp;
- else if (subcontrolString == QLatin1String("edit")){
- subcontrol = QStyle::SC_SpinBoxEditField;
- }
- return qApp->style()->subControlRect(control,
- qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
- subcontrol, widget());
-
+ {
+ QStyle::ComplexControl control = QStyle::CC_SpinBox;
+ if (subcontrolString == QLatin1String("down"))
+ subcontrol = QStyle::SC_SpinBoxDown;
+ else if (subcontrolString == QLatin1String("up"))
+ subcontrol = QStyle::SC_SpinBoxUp;
+ else if (subcontrolString == QLatin1String("edit")){
+ subcontrol = QStyle::SC_SpinBoxEditField;
}
+ return qApp->style()->subControlRect(control,
+ qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
+ subcontrol, widget());
+
+ }
break;
case Slider:
- {
- QStyle::ComplexControl control = QStyle::CC_Slider;
- if (subcontrolString == QLatin1String("handle"))
- subcontrol = QStyle::SC_SliderHandle;
- else if (subcontrolString == QLatin1String("groove"))
- subcontrol = QStyle::SC_SliderGroove;
- return qApp->style()->subControlRect(control,
- qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
- subcontrol, widget());
+ {
+ QStyle::ComplexControl control = QStyle::CC_Slider;
+ if (subcontrolString == QLatin1String("handle"))
+ subcontrol = QStyle::SC_SliderHandle;
+ else if (subcontrolString == QLatin1String("groove"))
+ subcontrol = QStyle::SC_SliderGroove;
+ return qApp->style()->subControlRect(control,
+ qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
+ subcontrol, widget());
- }
+ }
break;
case ScrollBar:
- {
- QStyle::ComplexControl control = QStyle::CC_ScrollBar;
- if (subcontrolString == QLatin1String("slider"))
- subcontrol = QStyle::SC_ScrollBarSlider;
- if (subcontrolString == QLatin1String("groove"))
- subcontrol = QStyle::SC_ScrollBarGroove;
- else if (subcontrolString == QLatin1String("handle"))
- subcontrol = QStyle::SC_ScrollBarSlider;
- else if (subcontrolString == QLatin1String("add"))
- subcontrol = QStyle::SC_ScrollBarAddPage;
- else if (subcontrolString == QLatin1String("sub"))
- subcontrol = QStyle::SC_ScrollBarSubPage;
- return qApp->style()->subControlRect(control,
- qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
- subcontrol, widget());
- }
+ {
+ QStyle::ComplexControl control = QStyle::CC_ScrollBar;
+ if (subcontrolString == QLatin1String("slider"))
+ subcontrol = QStyle::SC_ScrollBarSlider;
+ if (subcontrolString == QLatin1String("groove"))
+ subcontrol = QStyle::SC_ScrollBarGroove;
+ else if (subcontrolString == QLatin1String("handle"))
+ subcontrol = QStyle::SC_ScrollBarSlider;
+ else if (subcontrolString == QLatin1String("add"))
+ subcontrol = QStyle::SC_ScrollBarAddPage;
+ else if (subcontrolString == QLatin1String("sub"))
+ subcontrol = QStyle::SC_ScrollBarSubPage;
+ return qApp->style()->subControlRect(control,
+ qstyleoption_cast<QStyleOptionComplex*>(m_styleoption),
+ subcontrol, widget());
+ }
break;
default:
break;
@@ -916,21 +928,21 @@ void QStyleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWid
qApp->style()->drawControl(QStyle::CE_PushButton, m_styleoption, painter, widget());
break;
case ItemRow :{
- QPixmap pixmap;
- // Only draw through style once
- const QString pmKey = QLatin1Literal("itemrow") % QString::number(m_styleoption->state,16) % activeControl();
- if (!QPixmapCache::find(pmKey, pixmap) || pixmap.width() < width() || height() != pixmap.height()) {
- int newSize = width();
- pixmap = QPixmap(newSize, height());
- pixmap.fill(Qt::transparent);
- QPainter pixpainter(&pixmap);
- qApp->style()->drawPrimitive(QStyle::PE_PanelItemViewRow, m_styleoption, &pixpainter, widget());
- if (!qApp->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected) && selected())
- pixpainter.fillRect(m_styleoption->rect, m_styleoption->palette.highlight());
- QPixmapCache::insert(pmKey, pixmap);
- }
- painter->drawPixmap(0, 0, pixmap);
+ QPixmap pixmap;
+ // Only draw through style once
+ const QString pmKey = QLatin1Literal("itemrow") % QString::number(m_styleoption->state,16) % activeControl();
+ if (!QPixmapCache::find(pmKey, pixmap) || pixmap.width() < width() || height() != pixmap.height()) {
+ int newSize = width();
+ pixmap = QPixmap(newSize, height());
+ pixmap.fill(Qt::transparent);
+ QPainter pixpainter(&pixmap);
+ qApp->style()->drawPrimitive(QStyle::PE_PanelItemViewRow, m_styleoption, &pixpainter, widget());
+ if (!qApp->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected) && selected())
+ pixpainter.fillRect(m_styleoption->rect, m_styleoption->palette.highlight());
+ QPixmapCache::insert(pmKey, pixmap);
}
+ painter->drawPixmap(0, 0, pixmap);
+ }
break;
case Item:
qApp->style()->drawControl(QStyle::CE_ItemViewItem, m_styleoption, painter, widget());
@@ -964,8 +976,28 @@ void QStyleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWid
case RadioButton:
qApp->style()->drawControl(QStyle::CE_RadioButton, m_styleoption, painter, widget());
break;
- case Edit:
+ case Edit: {
+#ifdef Q_WS_MAC
+ if (style() == "mac" && hint().contains("mac.search")) {
+ const QPaintDevice *target = painter->device();
+ HIThemeFrameDrawInfo fdi;
+ fdi.version = 1;
+ fdi.state = kThemeStateActive;
+ SInt32 frame_size;
+ GetThemeMetric(kThemeMetricEditTextFrameOutset, &frame_size);
+ fdi.kind = kHIThemeFrameTextFieldRound;
+ if ((m_styleoption->state & QStyle::State_ReadOnly) || !(m_styleoption->state & QStyle::State_Enabled))
+ fdi.state = kThemeStateInactive;
+ fdi.isFocused = (m_styleoption->state & QStyle::State_HasFocus);
+ HIRect hirect = qt_hirectForQRect(m_styleoption->rect,
+ QRect(frame_size, frame_size,
+ frame_size * 2, frame_size * 2));
+ HIThemeDrawFrame(&hirect, &fdi, qt_mac_cg_context(target), kHIThemeOrientationNormal);
+ return;
+ }
+#endif
qApp->style()->drawPrimitive(QStyle::PE_PanelLineEdit, m_styleoption, painter, widget());
+ }
break;
case Widget:
qApp->style()->drawPrimitive(QStyle::PE_Widget, m_styleoption, painter, widget());
@@ -975,7 +1007,7 @@ void QStyleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWid
break;
case Splitter:
painter->fillRect(0, 0, width(), height(), m_styleoption->palette.dark().color());
-// qApp->style()->drawControl(QStyle::CE_Splitter, m_styleoption, painter, widget());
+ // qApp->style()->drawControl(QStyle::CE_Splitter, m_styleoption, painter, widget());
break;
case ComboBox:
{
@@ -1016,23 +1048,23 @@ void QStyleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWid
qApp->style()->drawComplexControl(QStyle::CC_ScrollBar, qstyleoption_cast<QStyleOptionComplex*>(m_styleoption), painter, widget());
break;
case Menu: {
- if (QMenu *menu = qobject_cast<QMenu*>(widget())) {
- m_styleoption->palette = menu->palette();
- }
- QStyleHintReturnMask val;
- qApp->style()->styleHint(QStyle::SH_Menu_Mask, m_styleoption, widget(), &val);
- painter->save();
- painter->setClipRegion(val.region);
- painter->fillRect(m_styleoption->rect, m_styleoption->palette.window());
- painter->restore();
- qApp->style()->drawPrimitive(QStyle::PE_PanelMenu, m_styleoption, painter, widget());
-
- QStyleOptionFrame frame;
- frame.lineWidth = qApp->style()->pixelMetric(QStyle::PM_MenuPanelWidth);
- frame.midLineWidth = 0;
- frame.rect = m_styleoption->rect;
- qApp->style()->drawPrimitive(QStyle::PE_FrameMenu, &frame, painter, widget());
+ if (QMenu *menu = qobject_cast<QMenu*>(widget())) {
+ m_styleoption->palette = menu->palette();
}
+ QStyleHintReturnMask val;
+ qApp->style()->styleHint(QStyle::SH_Menu_Mask, m_styleoption, widget(), &val);
+ painter->save();
+ painter->setClipRegion(val.region);
+ painter->fillRect(m_styleoption->rect, m_styleoption->palette.window());
+ painter->restore();
+ qApp->style()->drawPrimitive(QStyle::PE_PanelMenu, m_styleoption, painter, widget());
+
+ QStyleOptionFrame frame;
+ frame.lineWidth = qApp->style()->pixelMetric(QStyle::PM_MenuPanelWidth);
+ frame.midLineWidth = 0;
+ frame.rect = m_styleoption->rect;
+ qApp->style()->drawPrimitive(QStyle::PE_FrameMenu, &frame, painter, widget());
+ }
break;
default:
break;
diff --git a/src/src.pro b/src/src.pro
index c2689d6f..f28bc293 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -48,6 +48,10 @@ symbian {
target.path = $$INSTALL_IMPORTS/$$TARGETPATH
+mac {
+ LIBS += -framework Carbon
+}
+
INSTALLS += target
symbian {