|
|
|
@ -24,6 +24,7 @@
|
|
|
|
|
#include <tqprogressbar.h>
|
|
|
|
|
#include <tqtabbar.h>
|
|
|
|
|
#include <tqradiobutton.h>
|
|
|
|
|
#include <tqcheckbox.h>
|
|
|
|
|
#include <tqpopupmenu.h>
|
|
|
|
|
#include <tqmenudata.h>
|
|
|
|
|
#include <tqcombobox.h>
|
|
|
|
@ -225,8 +226,8 @@ inline TQPixmap convertQt4ToTQt3Pixmap(QIcon qt4icon, int iconsize, TQPixmapCach
|
|
|
|
|
|
|
|
|
|
inline QIcon convertTQt3ToQt4Pixmap(TQPixmap tqt3pixmap)
|
|
|
|
|
{
|
|
|
|
|
QPixmap qtPM = QPixmap::fromX11Pixmap(tqt3pixmap.handle(), QPixmap::ExplicitlyShared);
|
|
|
|
|
return QIcon(qtPM);
|
|
|
|
|
QPixmap qt4pm = QPixmap::fromX11Pixmap(tqt3pixmap.handle(), QPixmap::ImplicitlyShared);
|
|
|
|
|
return QIcon(qt4pm);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline TQIconSet convertQt4ToTQt3IconSet(QIcon qt4icon, int smallsize, int largesize, TQPixmapCache* pmCache = 0)
|
|
|
|
@ -792,6 +793,7 @@ Qt4TDEStyle::Qt4TDEStyle()
|
|
|
|
|
m_tqt3progressbar_widget = new TQProgressBar(m_tqt3parent_widget);
|
|
|
|
|
m_tqt3tabbar_widget = new TQTabBar(m_tqt3parent_widget);
|
|
|
|
|
m_tqt3radiobutton_widget = new TQRadioButton(m_tqt3parent_widget);
|
|
|
|
|
m_tqt3checkbox_widget = new TQCheckBox(m_tqt3parent_widget);
|
|
|
|
|
m_tqt3popupmenu_widget = new TQPopupMenu(m_tqt3parent_widget);
|
|
|
|
|
m_tqt3combobox_widget = new TQComboBox(m_tqt3parent_widget);
|
|
|
|
|
m_tqt3slider_widget = new TQSlider(m_tqt3parent_widget);
|
|
|
|
@ -822,6 +824,7 @@ Qt4TDEStyle::~Qt4TDEStyle()
|
|
|
|
|
// delete m_tqt3progressbar_widget;
|
|
|
|
|
// delete m_tqt3tabbar_widget;
|
|
|
|
|
// delete m_tqt3radiobutton_widget;
|
|
|
|
|
// delete m_tqt3checkbox_widget;
|
|
|
|
|
// delete m_tqt3popupmenu_widget;
|
|
|
|
|
// delete m_tqt3combobox_widget;
|
|
|
|
|
// delete m_tqt3slider_widget;
|
|
|
|
@ -927,12 +930,33 @@ QIcon Qt4TDEStyle::standardIconImplementation(StandardPixmap standardIcon, const
|
|
|
|
|
TQStyle::StylePixmap tqt3stylepixmap = TQStyle::SP_CustomBase;
|
|
|
|
|
switch (standardIcon) {
|
|
|
|
|
// case QStyle::SP_TitleBarMenuButton;
|
|
|
|
|
// case QStyle::SP_TitleBarMinButton:
|
|
|
|
|
// case QStyle::SP_TitleBarMaxButton:
|
|
|
|
|
// case QStyle::SP_TitleBarCloseButton:
|
|
|
|
|
// case QStyle::SP_TitleBarNormalButton:
|
|
|
|
|
// case QStyle::SP_TitleBarShadeButton:
|
|
|
|
|
// case QStyle::SP_TitleBarUnshadeButton:
|
|
|
|
|
// tqt3stylepixmap = TQStyle::SP_TitleBarMenuButton;
|
|
|
|
|
// retswitch = 1;
|
|
|
|
|
// break;
|
|
|
|
|
case QStyle::SP_TitleBarMinButton:
|
|
|
|
|
tqt3stylepixmap = TQStyle::SP_TitleBarMinButton;
|
|
|
|
|
retswitch = 1;
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::SP_TitleBarMaxButton:
|
|
|
|
|
tqt3stylepixmap = TQStyle::SP_TitleBarMaxButton;
|
|
|
|
|
retswitch = 1;
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::SP_TitleBarCloseButton:
|
|
|
|
|
tqt3stylepixmap = TQStyle::SP_TitleBarCloseButton;
|
|
|
|
|
retswitch = 1;
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::SP_TitleBarNormalButton:
|
|
|
|
|
tqt3stylepixmap = TQStyle::SP_TitleBarNormalButton;
|
|
|
|
|
retswitch = 1;
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::SP_TitleBarShadeButton:
|
|
|
|
|
tqt3stylepixmap = TQStyle::SP_TitleBarShadeButton;
|
|
|
|
|
retswitch = 1;
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::SP_TitleBarUnshadeButton:
|
|
|
|
|
tqt3stylepixmap = TQStyle::SP_TitleBarUnshadeButton;
|
|
|
|
|
retswitch = 1;
|
|
|
|
|
break;
|
|
|
|
|
// case QStyle::SP_TitleBarContextHelpButton:
|
|
|
|
|
// case QStyle::SP_DockWidgetCloseButton:
|
|
|
|
|
case QStyle::SP_MessageBoxInformation:
|
|
|
|
@ -1138,7 +1162,16 @@ QIcon Qt4TDEStyle::standardIconImplementation(StandardPixmap standardIcon, const
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (retswitch == 1) {
|
|
|
|
|
reticon = convertTQt3ToQt4Pixmap(tqApp->style().stylePixmap(tqt3stylepixmap, interfaceWidget));
|
|
|
|
|
TQPixmap tqt3pixmap = tqApp->style().stylePixmap(tqt3stylepixmap, interfaceWidget);
|
|
|
|
|
// FIXME
|
|
|
|
|
// This spews tons of "X Error: BadDrawable (invalid Pixmap or Window parameter) 9" errors and fails to work
|
|
|
|
|
// if (tqt3pixmap.isNull() == false) {
|
|
|
|
|
// reticon = convertTQt3ToQt4Pixmap(tqt3pixmap);
|
|
|
|
|
// }
|
|
|
|
|
// else {
|
|
|
|
|
// Tell Qt4 to get the information
|
|
|
|
|
reticon = BASE_QT4_STYLE_CLASS::standardIconImplementation(standardIcon, opt, w);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (retswitch == 2) {
|
|
|
|
@ -1146,7 +1179,7 @@ QIcon Qt4TDEStyle::standardIconImplementation(StandardPixmap standardIcon, const
|
|
|
|
|
}
|
|
|
|
|
else if (retswitch == 3) {
|
|
|
|
|
// convert string to icon
|
|
|
|
|
reticon = convertTQt3ToQt4Pixmap(DesktopIcon(iconLookupName));
|
|
|
|
|
reticon = QIcon(convertTQt3ToQt4String(KGlobal::iconLoader()->iconPath(iconLookupName, KIcon::Desktop, true)));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Tell Qt4 to get the information
|
|
|
|
@ -2049,6 +2082,13 @@ int Qt4TDEStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const
|
|
|
|
|
if (tqt3pixelmetric == TQStyle::PM_TabBarTabVSpace) {
|
|
|
|
|
retval = retval - 1;
|
|
|
|
|
}
|
|
|
|
|
// HACK
|
|
|
|
|
// Qt4 does not normally allow enough space for the rightmost tab to be
|
|
|
|
|
// completely drawn when PM_TabBarTabOverlap is greater than zero
|
|
|
|
|
// This is related to the fact that PM_TabBarTabOverlap is not implemented in Qt4
|
|
|
|
|
if (tqt3pixelmetric == TQStyle::PM_TabBarTabHSpace) {
|
|
|
|
|
retval = retval + tqApp->style().pixelMetric(TQStyle::PM_TabBarTabOverlap, interfaceWidget);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (retswitch == 2) {
|
|
|
|
@ -2071,6 +2111,7 @@ TQWidget* Qt4TDEStyle::initializeInterfaceWidget(TQt3WidgetType wt, const QWidge
|
|
|
|
|
// Qt4 interface widget pointers
|
|
|
|
|
const QTabBar* qt4tabbar_widget = 0;
|
|
|
|
|
const QRadioButton* qt4radiobutton_widget = 0;
|
|
|
|
|
const QCheckBox* qt4checkbox_widget = 0;
|
|
|
|
|
const QMenu* qt4menu_widget = 0;
|
|
|
|
|
const QProgressBar* qt4progressbar_widget = 0;
|
|
|
|
|
const QComboBox* qt4combobox_widget = 0;
|
|
|
|
@ -2180,6 +2221,15 @@ TQWidget* Qt4TDEStyle::initializeInterfaceWidget(TQt3WidgetType wt, const QWidge
|
|
|
|
|
m_tqt3radiobutton_widget->setText(convertQt4ToTQt3String(qt4radiobutton_widget->text()));
|
|
|
|
|
m_tqt3radiobutton_widget->setDown(qt4radiobutton_widget->isDown());
|
|
|
|
|
break;
|
|
|
|
|
case TQT3WT_TQCheckBox:
|
|
|
|
|
interfaceWidget = m_tqt3checkbox_widget;
|
|
|
|
|
// Copy over all widget attributes
|
|
|
|
|
qt4checkbox_widget = dynamic_cast<const QCheckBox*>(w);
|
|
|
|
|
m_tqt3checkbox_widget->setGeometry(0, 0, qt4checkbox_widget->width(), qt4checkbox_widget->height());
|
|
|
|
|
m_tqt3checkbox_widget->setEnabled(qt4checkbox_widget->isEnabled());
|
|
|
|
|
m_tqt3checkbox_widget->setText(convertQt4ToTQt3String(qt4checkbox_widget->text()));
|
|
|
|
|
m_tqt3checkbox_widget->setDown(qt4checkbox_widget->isDown());
|
|
|
|
|
break;
|
|
|
|
|
case TQT3WT_TQComboBox:
|
|
|
|
|
interfaceWidget = m_tqt3combobox_widget;
|
|
|
|
|
// Copy over all widget attributes
|
|
|
|
@ -2877,27 +2927,57 @@ void Qt4TDEStyle::drawControl(ControlElement element, const QStyleOption *opt, Q
|
|
|
|
|
// We will end up clipping on the left edge if the rectangle is not adjusted
|
|
|
|
|
tqt3elementrect = TQRect(tqt3elementrect.x()+tqt3tabwidth, tqt3elementrect.y(), tqt3elementrect.width()-(tqt3tabwidth*1), tqt3elementrect.height());
|
|
|
|
|
}
|
|
|
|
|
if (drawingTab->identifier() == (TQApplication::reverseLayout() ? 0 : (m_tqt3tabbar_widget->count()-1))) {
|
|
|
|
|
// This is the last tab in the tab bar
|
|
|
|
|
// We will end up clipping on the right edge if the rectangle is not adjusted
|
|
|
|
|
tqt3elementrect = TQRect(tqt3elementrect.x(), tqt3elementrect.y(), tqt3elementrect.width()-(tqt3tabwidth*2), tqt3elementrect.height());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#if 0
|
|
|
|
|
case CE_RadioButton:
|
|
|
|
|
// Unlike Qt3, QStyle::CE_RadioButton draws the button, the label, and the focus rectangle
|
|
|
|
|
// FIXME
|
|
|
|
|
// Handle the focus rectangle
|
|
|
|
|
tqtCE = TQStyle::CE_RadioButton;
|
|
|
|
|
draw_second_element = true;
|
|
|
|
|
tqtCE_element2 = TQStyle::CE_RadioButtonLabel;
|
|
|
|
|
|
|
|
|
|
sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQRadioButton);
|
|
|
|
|
interfaceWidget = initializeInterfaceWidget(TQT3WT_TQRadioButton, w);
|
|
|
|
|
if (interfaceWidget == 0) {
|
|
|
|
|
can_override = false;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
tqt3elementrect = tqApp->style().visualRect( tqApp->style().subRect(TQStyle::SR_RadioButtonIndicator, interfaceWidget), interfaceWidget);
|
|
|
|
|
tqt3element2rect = tqApp->style().visualRect( tqApp->style().subRect(TQStyle::SR_RadioButtonContents, interfaceWidget), interfaceWidget);
|
|
|
|
|
// HACK
|
|
|
|
|
// Lock text area height to indicator height
|
|
|
|
|
// [FIXME 001]
|
|
|
|
|
// Figure out why this is needed! Without it the text shows up lower than the indicator does...
|
|
|
|
|
// Potential subRect() mismatch between Qt4 and TQt3? See TQt3 qcommonstyle.cpp lines 1307 and 1315
|
|
|
|
|
tqt3element2rect.setHeight(tqt3elementrect.height());
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case CE_CheckBox:
|
|
|
|
|
// Unlike Qt3, QStyle::CE_CheckBox draws the button, the label, and the focus rectangle
|
|
|
|
|
// FIXME
|
|
|
|
|
// Handle the focus rectangle
|
|
|
|
|
tqtCE = TQStyle::CE_CheckBox;
|
|
|
|
|
draw_second_element = true;
|
|
|
|
|
tqtCE_element2 = TQStyle::CE_CheckBoxLabel;
|
|
|
|
|
|
|
|
|
|
sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQCheckBox);
|
|
|
|
|
interfaceWidget = initializeInterfaceWidget(TQT3WT_TQCheckBox, w);
|
|
|
|
|
if (interfaceWidget == 0) {
|
|
|
|
|
can_override = false;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
tqt3elementrect = tqApp->style().visualRect( tqApp->style().subRect(TQStyle::SR_CheckBoxIndicator, interfaceWidget), interfaceWidget);
|
|
|
|
|
tqt3element2rect = tqApp->style().visualRect( tqApp->style().subRect(TQStyle::SR_CheckBoxContents, interfaceWidget), interfaceWidget);
|
|
|
|
|
// HACK
|
|
|
|
|
// Lock text area height to indicator height
|
|
|
|
|
// [FIXME 001]
|
|
|
|
|
// Figure out why this is needed! Without it the text shows up lower than the indicator does...
|
|
|
|
|
// Potential subRect() mismatch between Qt4 and TQt3? See TQt3 qcommonstyle.cpp lines 1307 and 1315
|
|
|
|
|
tqt3element2rect.setHeight(tqt3elementrect.height());
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
#endif
|
|
|
|
|
case CE_MenuItem:
|
|
|
|
|
tqtCE = TQStyle::CE_PopupMenuItem;
|
|
|
|
|
sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQPopupMenu);
|
|
|
|
@ -2974,9 +3054,15 @@ void Qt4TDEStyle::drawControl(ControlElement element, const QStyleOption *opt, Q
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::CE_MenuBarEmptyArea:
|
|
|
|
|
tqtCE = TQStyle::CE_MenuBarEmptyArea;
|
|
|
|
|
sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQMenuBar);
|
|
|
|
|
interfaceWidget = initializeInterfaceWidget(TQT3WT_TQMenuBar, w);
|
|
|
|
|
if (interfaceWidget == 0) {
|
|
|
|
|
can_override = false;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::CE_MenuEmptyArea:
|
|
|
|
|
tqtCE = TQStyle::CE_MenuBarEmptyArea;
|
|
|
|
|
// Ignore request as Qt3 has no equivalent
|
|
|
|
|
can_override = false;
|
|
|
|
|
break;
|
|
|
|
|
case QStyle::CE_ItemViewItem:
|
|
|
|
|
// Ignore request as Qt3 has no equivalent
|
|
|
|
@ -3095,6 +3181,9 @@ void Qt4TDEStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QP
|
|
|
|
|
TQStyle::PrimitiveElement tqtPE;
|
|
|
|
|
TQStyleOption tqt3opt(TQStyleOption::Default);
|
|
|
|
|
|
|
|
|
|
// Convert the style flags
|
|
|
|
|
TQStyle::SFlags sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_NONE);
|
|
|
|
|
|
|
|
|
|
// NOTE: Qt3 seems to combine PE_FrameMenu and PE_PanelMenu into PE_PanelPopup
|
|
|
|
|
|
|
|
|
|
switch (pe) {
|
|
|
|
@ -3264,9 +3353,6 @@ void Qt4TDEStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QP
|
|
|
|
|
can_override = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Convert the style flags
|
|
|
|
|
TQStyle::SFlags sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_NONE);
|
|
|
|
|
|
|
|
|
|
// Determine the correct color group
|
|
|
|
|
TQPalette tqt3palette = convertQt4ToTQt3Palette(opt->palette);
|
|
|
|
|
TQColorGroup tqt3colorgroup;
|
|
|
|
|