Add support for native TDE file dialogs

Add style hints
Add standard pixmaps
Fix a slew of other problems
r14.0.x
Timothy Pearson 13 years ago
parent d4b531e2cc
commit bbeb99fb4c

@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: libsimplestyleplugin.so
# Generated by qmake (2.01a) (Qt 4.7.4) on: Tue Mar 13 13:25:48 2012
# Generated by qmake (2.01a) (Qt 4.7.4) on: Tue Mar 20 22:24:57 2012
# Project: plugin.pro
# Template: lib
# Command: /usr/bin/qmake-qt4 -o Makefile plugin.pro
@ -16,7 +16,7 @@ CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/tqt3 -I/usr/include/tqt -I/opt/trinity/include -I.
LINK = g++
LFLAGS = -Wl,-O1 -shared
LIBS = $(SUBLIBS) -L/usr/lib/i386-linux-gnu -L/usr/lib -ltqt -ltqt-mt -L /opt/trinity/lib -lDCOP -ltdecore -lQtGui -lQtCore -lpthread
LIBS = $(SUBLIBS) -L/usr/lib/i386-linux-gnu -L/usr/lib -ltqt -ltqt-mt -L /opt/trinity/lib -lDCOP -ltdecore -ltdeui -lkio -lQtGui -lQtCore -lpthread
AR = ar cqs
RANLIB =
QMAKE = /usr/bin/qmake-qt4

@ -12,7 +12,7 @@ TARGET = simplestyleplugin
INCLUDEPATH += /usr/include/tqt3
INCLUDEPATH += /usr/include/tqt
INCLUDEPATH += /opt/trinity/include
LIBS += -L/usr/lib -ltqt -ltqt-mt -L /opt/trinity/lib -lDCOP -ltdecore
LIBS += -L/usr/lib -ltqt -ltqt-mt -L /opt/trinity/lib -lDCOP -ltdecore -ltdeui -lkio
#! [0]
DESTDIR = ../styles/

@ -57,11 +57,32 @@
#include <kaboutdata.h>
#include <kicontheme.h>
#include <kiconloader.h>
#include <kfiledialog.h>
#endif
#define DEBUG_WARNINGS 1
// #define DEBUG_SPEW 1
#ifdef INTEGRATE_WITH_TDE
// BEGIN
// Qt4 file dialog hook information block
typedef QStringList (*_qt_filedialog_open_filenames_hook)(QWidget * parent, const QString &caption, const QString &dir,
const QString &filter, QString *selectedFilter, QFileDialog::Options options);
typedef QString (*_qt_filedialog_open_filename_hook) (QWidget * parent, const QString &caption, const QString &dir,
const QString &filter, QString *selectedFilter, QFileDialog::Options options);
typedef QString (*_qt_filedialog_save_filename_hook) (QWidget * parent, const QString &caption, const QString &dir,
const QString &filter, QString *selectedFilter, QFileDialog::Options options);
typedef QString (*_qt_filedialog_existing_directory_hook)(QWidget *parent, const QString &caption, const QString &dir,
QFileDialog::Options options);
extern Q_GUI_EXPORT _qt_filedialog_open_filename_hook qt_filedialog_open_filename_hook;
extern Q_GUI_EXPORT _qt_filedialog_open_filenames_hook qt_filedialog_open_filenames_hook;
extern Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook;
extern Q_GUI_EXPORT _qt_filedialog_existing_directory_hook qt_filedialog_existing_directory_hook;
// END
#endif // INTEGRATE_WITH_TDE
inline TQt::Orientation convertQt4ToTQt3Orientation(Qt::Orientation qt4orient)
{
TQt::Orientation tqt3orient;
@ -126,6 +147,17 @@ inline TQString convertQt4ToTQt3String(QString qt4string)
return TQString::fromUtf8(qt4string.toUtf8().data());
}
inline QStringList convertTQt3ToQt4StringList(TQStringList tqt3stringlist)
{
QStringList qt4stringlist;
for (TQStringList::Iterator it = tqt3stringlist.begin(); it != tqt3stringlist.end(); ++it) {
qt4stringlist.append(convertTQt3ToQt4String(*it));
}
return qt4stringlist;
}
inline TQIconSet convertQt4ToTQt3IconSet(QIcon qt4icon, int smallsize, int largesize)
{
int i=0;
@ -193,16 +225,20 @@ inline TQIconSet convertQt4ToTQt3IconSet(QIcon qt4icon, int smallsize, int large
return tqt3iconset;
}
inline TQPixmap convertQt4ToTQt3Pixmap(QIcon qt4icon)
inline TQPixmap convertQt4ToTQt3Pixmap(QIcon qt4icon, int iconsize, bool copyTransparency = true, TQColor* bgcolor = 0)
{
// Get the maximum icon size stored in the QIcon and generate a pixmap of that size
QSize qt4size = qt4icon.actualSize(QSize(32768,32768));
QSize qt4size = QSize(iconsize, iconsize);
QPixmap qt4iconpm = qt4icon.pixmap(qt4size);
TQPixmap tqtPM(qt4iconpm.width(), qt4iconpm.height(), qt4iconpm.depth());
TQPixmap tqtPM(qt4iconpm.width(), qt4iconpm.height(), (copyTransparency)?qt4iconpm.depth():((qt4iconpm.depth()>24)?24:qt4iconpm.depth()));
QPixmap qtPM = QPixmap::fromX11Pixmap(tqtPM.handle(), QPixmap::ExplicitlyShared);
if (copyTransparency) {
qtPM.fill(Qt::transparent);
}
else {
tqtPM.fill(*bgcolor);
}
QPainter qt4painter(&qtPM);
qt4painter.drawPixmap(0, 0, qt4iconpm);
qt4painter.end();
@ -210,6 +246,12 @@ inline TQPixmap convertQt4ToTQt3Pixmap(QIcon qt4icon)
return tqtPM;
}
inline QIcon convertTQt3ToQt4Pixmap(TQPixmap tqt3pixmap)
{
QPixmap qtPM = QPixmap::fromX11Pixmap(tqt3pixmap.handle(), QPixmap::ExplicitlyShared);
return QIcon(qtPM);
}
inline QRect convertTQt3ToQt4Rect(TQRect tqt3rect)
{
return QRect(tqt3rect.x(), tqt3rect.y(), tqt3rect.width(), tqt3rect.height());
@ -580,11 +622,49 @@ inline TQStyle::SFlags convertQt4ToTQt3SFlags(QStyle::State qt4stateflags, TQt3W
return sflags;
}
#ifdef INTEGRATE_WITH_TDE
static QString TDEFileDialogOpenName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options)
{
if (parent) {
return convertTQt3ToQt4String(KFileDialog::getOpenFileNameWId(convertQt4ToTQt3String(dir), convertQt4ToTQt3String(filter), parent->winId(), convertQt4ToTQt3String(caption)));
}
else {
return convertTQt3ToQt4String(KFileDialog::getOpenFileName(convertQt4ToTQt3String(dir), convertQt4ToTQt3String(filter), 0, convertQt4ToTQt3String(caption)));
}
}
static QStringList TDEFileDialogOpenNames(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options)
{
// TQWidget* tqt3parent = TQT_TQWIDGET(TQWidget::find( parent->winId() ));
TQWidget* tqt3parent = 0;
return convertTQt3ToQt4StringList(KFileDialog::getOpenFileNames(convertQt4ToTQt3String(dir), convertQt4ToTQt3String(filter), tqt3parent, convertQt4ToTQt3String(caption)));
}
static QString TDEFileDialogSaveName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options)
{
if (parent) {
return convertTQt3ToQt4String(KFileDialog::getSaveFileNameWId(convertQt4ToTQt3String(dir), convertQt4ToTQt3String(filter), parent->winId(), convertQt4ToTQt3String(caption)));
}
else {
return convertTQt3ToQt4String(KFileDialog::getSaveFileName(convertQt4ToTQt3String(dir), convertQt4ToTQt3String(filter), 0, convertQt4ToTQt3String(caption)));
}
}
static QString TDEFileDialogSelectDirectory(QWidget *parent, const QString &caption, const QString &dir, QFileDialog::Options)
{
TQWidget* tqt3parent = 0;
return convertTQt3ToQt4String(KFileDialog::getExistingDirectory(convertQt4ToTQt3String(dir), tqt3parent, convertQt4ToTQt3String(caption)));
}
#endif // INTEGRATE_WITH_TDE
#define NO_QT3_EQUIVALENT can_override = false;
#define DO_NOT_DRAW can_override = true; do_not_draw = true;
SimpleStyle::SimpleStyle()
{
m_previousQt4InterfaceWidget = 0;
m_previousTQt3InterfaceWidget = 0;
#ifdef INTEGRATE_WITH_TDE
if (!tqApp) {
// Initialize KApplication required data structures
@ -595,11 +675,11 @@ SimpleStyle::SimpleStyle()
argv[0] = (char*) malloc(sizeof(char) * 19);
strncpy(argv[0], "SimpleStyle", 19);
KAboutData aboutData("SimpleStyle", I18N_NOOP("SimpleStyle"), "v0.1",
m_aboutData = new KAboutData("SimpleStyle", I18N_NOOP("SimpleStyle"), "v0.1",
"TDE Qt4 theme engine", KAboutData::License_GPL,
"(c) 2012, Timothy Pearson",
"message goes here", 0 /* TODO: Website */, "kb9vqf@pearsoncomputing.net");
KCmdLineArgs::init(argc, argv, &aboutData);
KCmdLineArgs::init(argc, argv, m_aboutData);
// Qt4 can be SO STUPID sometimes...why can't I get the X11 display directly from qApp?!?!??
QWidget myhackedwidget;
@ -611,7 +691,7 @@ SimpleStyle::SimpleStyle()
// Set up Qt4 size hints to match the TDE sizes
// FIXME
// m_tqt3IconSize_MenuItem and m_tqt3IconSize_Large are still hardcoded
// m_tqt3DialogButtons_ShowIcons, m_tqt3IconSize_MenuItem, and m_tqt3IconSize_Large are still hardcoded
// Verify all mappings
m_tqt3IconSize_NoGroup = IconSize(KIcon::NoGroup);
m_tqt3IconSize_Desktop = IconSize(KIcon::Desktop);
@ -627,6 +707,7 @@ SimpleStyle::SimpleStyle()
m_tqt3IconSize_Tabbar = m_tqt3IconSize_MenuItem;
m_tqt3IconSize_Listview = m_tqt3IconSize_MenuItem;
m_tqt3IconSize_Button = m_tqt3IconSize_MenuItem;
m_tqt3DialogButtons_ShowIcons = 0;
#else // INTEGRATE_WITH_TDE
if (!tqApp) {
@ -652,6 +733,7 @@ SimpleStyle::SimpleStyle()
m_tqt3IconSize_Tabbar = m_tqt3IconSize_MenuItem;
m_tqt3IconSize_Listview = m_tqt3IconSize_MenuItem;
m_tqt3IconSize_Button = m_tqt3IconSize_MenuItem;
m_tqt3DialogButtons_ShowIcons = 0;
#endif // INTEGRATE_WITH_TDE
// Set the Qt4 palette to the TQt3 palette
@ -673,6 +755,13 @@ SimpleStyle::SimpleStyle()
m_tqt3window_widget = new TQWidget(m_tqt3parent_widget);
m_tqt3titlebar_widget = new TQTitleBar(m_tqt3window_widget, m_tqt3parent_widget);
m_tqt3menubar_widget = new TQMenuBar(m_tqt3parent_widget);
#ifdef INTEGRATE_WITH_TDE
qt_filedialog_open_filename_hook = &TDEFileDialogOpenName;
qt_filedialog_open_filenames_hook = &TDEFileDialogOpenNames;
qt_filedialog_save_filename_hook = &TDEFileDialogSaveName;
qt_filedialog_existing_directory_hook = &TDEFileDialogSelectDirectory;
#endif // INTEGRATE_WITH_TDE
}
SimpleStyle::~SimpleStyle()
@ -698,6 +787,8 @@ SimpleStyle::~SimpleStyle()
// FIXME
// Verify I'm not leaking memory like a sieve when this is commented out!!!
// delete m_tqt3parent_widget;
delete m_aboutData;
}
void SimpleStyle::polish(QPalette &palette)
@ -772,6 +863,682 @@ bool SimpleStyle::eventFilter(QObject *obj, QEvent *ev)
return false;
}
QIcon SimpleStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption* opt, const QWidget* w) const
{
QIcon reticon;
TQString iconLookupName;
TQWidget* interfaceWidget = 0;
char retswitch = 0;
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:
// case QStyle::SP_TitleBarContextHelpButton:
// case QStyle::SP_DockWidgetCloseButton:
case QStyle::SP_MessageBoxInformation:
tqt3stylepixmap = TQStyle::SP_MessageBoxInformation;
retswitch = 1;
break;
case QStyle::SP_MessageBoxWarning:
tqt3stylepixmap = TQStyle::SP_MessageBoxWarning;
retswitch = 1;
break;
case QStyle::SP_MessageBoxCritical:
tqt3stylepixmap = TQStyle::SP_MessageBoxCritical;
retswitch = 1;
break;
case QStyle::SP_MessageBoxQuestion:
tqt3stylepixmap = TQStyle::SP_MessageBoxQuestion;
retswitch = 1;
break;
#ifdef INTEGRATE_WITH_TDE
// FIXME
// Verify these mappings and fill in the missing ones
case QStyle::SP_DesktopIcon:
iconLookupName = "desktop";
retswitch = 3;
break;
case QStyle::SP_TrashIcon:
iconLookupName = "trash";
retswitch = 3;
break;
case QStyle::SP_ComputerIcon:
iconLookupName = "system";
retswitch = 3;
break;
case QStyle::SP_DriveFDIcon:
iconLookupName = "3floppy_unmount";
retswitch = 3;
break;
case QStyle::SP_DriveHDIcon:
iconLookupName = "hdd_unmount";
retswitch = 3;
break;
case QStyle::SP_DriveCDIcon:
iconLookupName = "cdrom_unmount";
retswitch = 3;
break;
case QStyle::SP_DriveDVDIcon:
iconLookupName = "dvd_unmount";
retswitch = 3;
break;
// case QStyle::SP_DriveNetIcon:
case QStyle::SP_DirOpenIcon:
iconLookupName = "folder_open";
retswitch = 3;
break;
case QStyle::SP_DirClosedIcon:
iconLookupName = "folder";
retswitch = 3;
break;
// case QStyle::SP_DirLinkIcon:
// case QStyle::SP_FileIcon:
// case QStyle::SP_FileLinkIcon:
// case QStyle::SP_ToolBarHorizontalExtensionButton:
// case QStyle::SP_ToolBarVerticalExtensionButton:
case QStyle::SP_FileDialogStart:
iconLookupName = "start";
retswitch = 3;
break;
case QStyle::SP_FileDialogEnd:
iconLookupName = "finish";
retswitch = 3;
break;
case QStyle::SP_FileDialogToParent:
iconLookupName = "up";
retswitch = 3;
break;
case QStyle::SP_FileDialogNewFolder:
iconLookupName = "folder_new";
retswitch = 3;
break;
case QStyle::SP_FileDialogDetailedView:
iconLookupName = "view_detailed";
retswitch = 3;
break;
case QStyle::SP_FileDialogInfoView:
iconLookupName = "view_icon";
retswitch = 3;
break;
// case QStyle::SP_FileDialogContentsView:
case QStyle::SP_FileDialogListView:
iconLookupName = "view_text";
retswitch = 3;
break;
case QStyle::SP_FileDialogBack:
iconLookupName = "back";
retswitch = 3;
break;
case QStyle::SP_DirIcon:
iconLookupName = "folder";
retswitch = 3;
break;
case QStyle::SP_DialogOkButton:
iconLookupName = "button_ok";
retswitch = 3;
break;
case QStyle::SP_DialogCancelButton:
iconLookupName = "button_cancel";
retswitch = 3;
break;
case QStyle::SP_DialogHelpButton:
iconLookupName = "help";
retswitch = 3;
break;
case QStyle::SP_DialogOpenButton:
iconLookupName = "fileopen";
retswitch = 3;
break;
case QStyle::SP_DialogSaveButton:
iconLookupName = "filesave";
retswitch = 3;
break;
case QStyle::SP_DialogCloseButton:
iconLookupName = "fileclose";
retswitch = 3;
break;
case QStyle::SP_DialogApplyButton:
iconLookupName = "apply";
retswitch = 3;
break;
// case QStyle::SP_DialogResetButton:
case QStyle::SP_DialogDiscardButton:
iconLookupName = "remove";
retswitch = 3;
break;
// case QStyle::SP_DialogYesButton:
// case QStyle::SP_DialogNoButton:
case QStyle::SP_ArrowUp:
iconLookupName = "up";
retswitch = 3;
break;
case QStyle::SP_ArrowDown:
iconLookupName = "down";
retswitch = 3;
break;
// case QStyle::SP_ArrowLeft:
// case QStyle::SP_ArrowRight:
case QStyle::SP_ArrowBack:
iconLookupName = "back";
retswitch = 3;
break;
case QStyle::SP_ArrowForward:
iconLookupName = "forward";
retswitch = 3;
break;
case QStyle::SP_DirHomeIcon:
iconLookupName = "folder_home";
retswitch = 3;
break;
// case QStyle::SP_CommandLink:
// case QStyle::SP_VistaShield:
case QStyle::SP_BrowserReload:
iconLookupName = "reload";
retswitch = 3;
break;
case QStyle::SP_BrowserStop:
iconLookupName = "stop";
retswitch = 3;
break;
case QStyle::SP_MediaPlay:
iconLookupName = "player_play";
retswitch = 3;
break;
case QStyle::SP_MediaStop:
iconLookupName = "player_stop";
retswitch = 3;
break;
case QStyle::SP_MediaPause:
iconLookupName = "player_pause";
retswitch = 3;
break;
case QStyle::SP_MediaSkipForward:
iconLookupName = "player_end";
retswitch = 3;
break;
case QStyle::SP_MediaSkipBackward:
iconLookupName = "player_start";
retswitch = 3;
break;
case QStyle::SP_MediaSeekForward:
iconLookupName = "player_fwd";
retswitch = 3;
break;
case QStyle::SP_MediaSeekBackward:
iconLookupName = "player_rew";
retswitch = 3;
break;
// case QStyle::SP_MediaVolume:
// case QStyle::SP_MediaVolumeMuted:
#endif // INTEGRATE_WITH_TDE
default:
#ifdef DEBUG_WARNINGS
printf("No pixmap for Qt4 standard pixmap request %d\n\r", standardIcon); fflush(stdout);
#endif
}
if (retswitch == 1) {
reticon = convertTQt3ToQt4Pixmap(tqApp->style().stylePixmap(tqt3stylepixmap, interfaceWidget));
}
else {
if (retswitch == 2) {
// reticon was already set
}
else if (retswitch == 3) {
// convert string to icon
reticon = convertTQt3ToQt4Pixmap(DesktopIcon(iconLookupName));
}
else {
// Tell Qt4 to get the information
reticon = QCommonStyle::standardIconImplementation(standardIcon, opt, w);
}
}
return reticon;
}
int SimpleStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *w, QStyleHintReturn* returnData) const
{
int retval = 0;
TQWidget* interfaceWidget = 0;
char retswitch = 0;
TQStyle::StyleHint tqt3stylehint = TQStyle::SH_CustomBase;
switch (hint) {
// FIXME
// Hardcode defaults from TQt3 where case statements have been commented out below...
case QStyle::SH_EtchDisabledText:
tqt3stylehint = TQStyle::SH_EtchDisabledText;
retswitch=1;
break;
// case QStyle::SH_DitherDisabledText:
// tqt3stylehint = TQStyle::SH_DitherDisabledText;
// retswitch=1;
// break;
case QStyle::SH_ScrollBar_MiddleClickAbsolutePosition:
tqt3stylehint = TQStyle::SH_ScrollBar_MiddleClickAbsolutePosition;
retswitch=1;
break;
case QStyle::SH_ScrollBar_ScrollWhenPointerLeavesControl:
tqt3stylehint = TQStyle::SH_ScrollBar_ScrollWhenPointerLeavesControl;
retswitch=1;
break;
case QStyle::SH_TabBar_SelectMouseType:
tqt3stylehint = TQStyle::SH_TabBar_SelectMouseType;
retswitch=1;
break;
case QStyle::SH_TabBar_Alignment:
tqt3stylehint = TQStyle::SH_TabBar_Alignment;
retswitch=1;
break;
case QStyle::SH_Header_ArrowAlignment:
tqt3stylehint = TQStyle::SH_Header_ArrowAlignment;
retswitch=1;
break;
case QStyle::SH_Slider_SnapToValue:
tqt3stylehint = TQStyle::SH_Slider_SnapToValue;
retswitch=1;
break;
case QStyle::SH_Slider_SloppyKeyEvents:
tqt3stylehint = TQStyle::SH_Slider_SloppyKeyEvents;
retswitch=1;
break;
case QStyle::SH_ProgressDialog_CenterCancelButton:
tqt3stylehint = TQStyle::SH_ProgressDialog_CenterCancelButton;
retswitch=1;
break;
case QStyle::SH_ProgressDialog_TextLabelAlignment:
tqt3stylehint = TQStyle::SH_ProgressDialog_TextLabelAlignment;
retswitch=1;
break;
case QStyle::SH_PrintDialog_RightAlignButtons:
tqt3stylehint = TQStyle::SH_PrintDialog_RightAlignButtons;
retswitch=1;
break;
case QStyle::SH_MainWindow_SpaceBelowMenuBar:
tqt3stylehint = TQStyle::SH_MainWindow_SpaceBelowMenuBar;
retswitch=1;
break;
case QStyle::SH_FontDialog_SelectAssociatedText:
tqt3stylehint = TQStyle::SH_FontDialog_SelectAssociatedText;
retswitch=1;
break;
case QStyle::SH_Menu_AllowActiveAndDisabled:
tqt3stylehint = TQStyle::SH_PopupMenu_AllowActiveAndDisabled;
retswitch=1;
break;
case QStyle::SH_Menu_SpaceActivatesItem:
tqt3stylehint = TQStyle::SH_PopupMenu_SpaceActivatesItem;
retswitch=1;
break;
case QStyle::SH_Menu_SubMenuPopupDelay:
tqt3stylehint = TQStyle::SH_PopupMenu_SubMenuPopupDelay;
retswitch=1;
break;
case QStyle::SH_ScrollView_FrameOnlyAroundContents:
tqt3stylehint = TQStyle::SH_ScrollView_FrameOnlyAroundContents;
retswitch=1;
break;
case QStyle::SH_MenuBar_AltKeyNavigation:
tqt3stylehint = TQStyle::SH_MenuBar_AltKeyNavigation;
retswitch=1;
break;
case QStyle::SH_ComboBox_ListMouseTracking:
tqt3stylehint = TQStyle::SH_ComboBox_ListMouseTracking;
retswitch=1;
break;
case QStyle::SH_Menu_MouseTracking:
tqt3stylehint = TQStyle::SH_PopupMenu_MouseTracking;
retswitch=1;
break;
case QStyle::SH_MenuBar_MouseTracking:
tqt3stylehint = TQStyle::SH_MenuBar_MouseTracking;
retswitch=1;
break;
case QStyle::SH_ItemView_ChangeHighlightOnFocus:
tqt3stylehint = TQStyle::SH_ItemView_ChangeHighlightOnFocus;
retswitch=1;
break;
case QStyle::SH_Widget_ShareActivation:
tqt3stylehint = TQStyle::SH_Widget_ShareActivation;
retswitch=1;
break;
case QStyle::SH_Workspace_FillSpaceOnMaximize:
tqt3stylehint = TQStyle::SH_Workspace_FillSpaceOnMaximize;
retswitch=1;
break;
case QStyle::SH_ComboBox_Popup:
tqt3stylehint = TQStyle::SH_ComboBox_Popup;
retswitch=1;
break;
case QStyle::SH_TitleBar_NoBorder:
// HACK
// Qt4 again shows its limitations!
// Why are titlebar borders more limited in Qt4??? You can only choose between no borders or borders of exactly 4 pixels when using Qt4...
if (tqApp->style().pixelMetric(TQStyle::PM_MDIFrameWidth, interfaceWidget) < 4) {
retval=1;
}
else {
retval=0;
}
retswitch=2;
break;
// case QStyle::SH_Slider_StopMouseOverSlider:
// tqt3stylehint = TQStyle::SH_Slider_StopMouseOverSlider;
// retswitch=1;
// break;
case QStyle::SH_BlinkCursorWhenTextSelected:
tqt3stylehint = TQStyle::SH_BlinkCursorWhenTextSelected;
retswitch=1;
break;
case QStyle::SH_RichText_FullWidthSelection:
tqt3stylehint = TQStyle::SH_RichText_FullWidthSelection;
retswitch=1;
break;
case QStyle::SH_Menu_Scrollable:
tqt3stylehint = TQStyle::SH_PopupMenu_Scrollable;
retswitch=1;
break;
// FIXME
// Apparently SH_GroupBox_TextLabelVerticalAlignment returns something different (enum value?) under TQt3,
// so translation will be needed.
// case QStyle::SH_GroupBox_TextLabelVerticalAlignment:
// tqt3stylehint = TQStyle::SH_GroupBox_TextLabelVerticalAlignment;
// retswitch=1;
// break;
case QStyle::SH_GroupBox_TextLabelColor:
tqt3stylehint = TQStyle::SH_GroupBox_TextLabelColor;
retswitch=1;
break;
case QStyle::SH_Menu_SloppySubMenus:
tqt3stylehint = TQStyle::SH_PopupMenu_SloppySubMenus;
retswitch=1;
break;
case QStyle::SH_Table_GridLineColor:
tqt3stylehint = TQStyle::SH_Table_GridLineColor;
retswitch=1;
break;
case QStyle::SH_LineEdit_PasswordCharacter:
tqt3stylehint = TQStyle::SH_LineEdit_PasswordCharacter;
retswitch=1;
break;
case QStyle::SH_DialogButtons_DefaultButton:
tqt3stylehint = TQStyle::SH_DialogButtons_DefaultButton;
retswitch=1;
break;
case QStyle::SH_ToolBox_SelectedPageTitleBold:
tqt3stylehint = TQStyle::SH_ToolBox_SelectedPageTitleBold;
retswitch=1;
break;
case QStyle::SH_TabBar_PreferNoArrows:
tqt3stylehint = TQStyle::SH_TabBar_PreferNoArrows;
retswitch=1;
break;
case QStyle::SH_ScrollBar_LeftClickAbsolutePosition:
tqt3stylehint = TQStyle::SH_ScrollBar_LeftClickAbsolutePosition;
retswitch=1;
break;
// case QStyle::SH_Q3ListViewExpand_SelectMouseType:
// tqt3stylehint = TQStyle::SH_Q3ListViewExpand_SelectMouseType;
// retswitch=1;
// break;
// case QStyle::SH_UnderlineShortcut:
// tqt3stylehint = TQStyle::SH_UnderlineShortcut;
// retswitch=1;
// break;
// case QStyle::SH_SpinBox_AnimateButton:
// tqt3stylehint = TQStyle::SH_SpinBox_AnimateButton;
// retswitch=1;
// break;
// case QStyle::SH_SpinBox_KeyPressAutoRepeatRate:
// tqt3stylehint = TQStyle::SH_SpinBox_KeyPressAutoRepeatRate;
// retswitch=1;
// break;
// case QStyle::SH_SpinBox_ClickAutoRepeatRate:
// tqt3stylehint = TQStyle::SH_SpinBox_ClickAutoRepeatRate;
// retswitch=1;
// break;
// case QStyle::SH_Menu_FillScreenWithScroll:
// tqt3stylehint = TQStyle::SH_PopupMenu_FillScreenWithScroll;
// retswitch=1;
// break;
// case QStyle::SH_ToolTipLabel_Opacity:
// tqt3stylehint = TQStyle::SH_ToolTipLabel_Opacity;
// retswitch=1;
// break;
// case QStyle::SH_DrawMenuBarSeparator:
// tqt3stylehint = TQStyle::SH_DrawMenuBarSeparator;
// retswitch=1;
// break;
// case QStyle::SH_TitleBar_ModifyNotification:
// tqt3stylehint = TQStyle::SH_TitleBar_ModifyNotification;
// retswitch=1;
// break;
// case QStyle::SH_Button_FocusPolicy:
// tqt3stylehint = TQStyle::SH_Button_FocusPolicy;
// retswitch=1;
// break;
// case QStyle::SH_MenuBar_DismissOnSecondClick:
// tqt3stylehint = TQStyle::SH_MenuBar_DismissOnSecondClick;
// retswitch=1;
// break;
// case QStyle::SH_MessageBox_UseBorderForButtonSpacing:
// tqt3stylehint = TQStyle::SH_MessageBox_UseBorderForButtonSpacing;
// retswitch=1;
// break;
// case QStyle::SH_TitleBar_AutoRaise:
// tqt3stylehint = TQStyle::SH_TitleBar_AutoRaise;
// retswitch=1;
// break;
// case QStyle::SH_ToolButton_PopupDelay:
// tqt3stylehint = TQStyle::SH_ToolButton_PopupDelay;
// retswitch=1;
// break;
// case QStyle::SH_FocusFrame_Mask:
// tqt3stylehint = TQStyle::SH_FocusFrame_Mask;
// retswitch=1;
// break;
// case QStyle::SH_RubberBand_Mask:
// tqt3stylehint = TQStyle::SH_RubberBand_Mask;
// retswitch=1;
// break;
// case QStyle::SH_WindowFrame_Mask:
// tqt3stylehint = TQStyle::SH_WindowFrame_Mask;
// retswitch=1;
// break;
// case QStyle::SH_SpinControls_DisableOnBounds:
// tqt3stylehint = TQStyle::SH_SpinControls_DisableOnBounds;
// retswitch=1;
// break;
// case QStyle::SH_Dial_BackgroundRole:
// tqt3stylehint = TQStyle::SH_Dial_BackgroundRole;
// retswitch=1;
// break;
// case QStyle::SH_ComboBox_LayoutDirection:
// tqt3stylehint = TQStyle::SH_ComboBox_LayoutDirection;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_EllipsisLocation:
// tqt3stylehint = TQStyle::SH_ItemView_EllipsisLocation;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_ShowDecorationSelected:
// tqt3stylehint = TQStyle::SH_ItemView_ShowDecorationSelected;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_ActivateItemOnSingleClick:
// tqt3stylehint = TQStyle::SH_ItemView_ActivateItemOnSingleClick;
// retswitch=1;
// break;
// case QStyle::SH_ScrollBar_ContextMenu:
// tqt3stylehint = TQStyle::SH_ScrollBar_ContextMenu;
// retswitch=1;
// break;
// case QStyle::SH_ScrollBar_RollBetweenButtons:
// tqt3stylehint = TQStyle::SH_ScrollBar_RollBetweenButtons;
// retswitch=1;
// break;
// case QStyle::SH_Slider_AbsoluteSetButtons:
// tqt3stylehint = TQStyle::SH_Slider_AbsoluteSetButtons;
// retswitch=1;
// break;
// case QStyle::SH_Slider_PageSetButtons:
// tqt3stylehint = TQStyle::SH_Slider_PageSetButtons;
// retswitch=1;
// break;
// case QStyle::SH_Menu_KeyboardSearch:
// tqt3stylehint = TQStyle::SH_PopupMenu_KeyboardSearch;
// retswitch=1;
// break;
// case QStyle::SH_TabBar_ElideMode:
// tqt3stylehint = TQStyle::SH_TabBar_ElideMode;
// retswitch=1;
// break;
// case QStyle::SH_DialogButtonLayout:
// tqt3stylehint = TQStyle::SH_DialogButtonLayout;
// retswitch=1;
// break;
// case QStyle::SH_ComboBox_PopupFrameStyle:
// tqt3stylehint = TQStyle::SH_ComboBox_PopupFrameStyle;
// retswitch=1;
// break;
// case QStyle::SH_MessageBox_TextInteractionFlags:
// tqt3stylehint = TQStyle::SH_MessageBox_TextInteractionFlags;
// retswitch=1;
// break;
case QStyle::SH_DialogButtonBox_ButtonsHaveIcons:
retval = m_tqt3DialogButtons_ShowIcons;
retswitch=2;
break;
// case QStyle::SH_SpellCheckUnderlineStyle:
// tqt3stylehint = TQStyle::SH_SpellCheckUnderlineStyle;
// retswitch=1;
// break;
// case QStyle::SH_MessageBox_CenterButtons:
// tqt3stylehint = TQStyle::SH_MessageBox_CenterButtons;
// retswitch=1;
// break;
// case QStyle::SH_Menu_SelectionWrap:
// tqt3stylehint = TQStyle::SH_Menu_SelectionWrap;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_MovementWithoutUpdatingSelection:
// tqt3stylehint = TQStyle::SH_ItemView_MovementWithoutUpdatingSelection;
// retswitch=1;
// break;
// case QStyle::SH_ToolTip_Mask:
// tqt3stylehint = TQStyle::SH_ToolTip_Mask;
// retswitch=1;
// break;
// case QStyle::SH_FocusFrame_AboveWidget:
// tqt3stylehint = TQStyle::SH_FocusFrame_AboveWidget;
// retswitch=1;
// break;
// case QStyle::SH_TextControl_FocusIndicatorTextCharFormat:
// tqt3stylehint = TQStyle::SH_TextControl_FocusIndicatorTextCharFormat;
// retswitch=1;
// break;
// case QStyle::SH_WizardStyle:
// tqt3stylehint = TQStyle::SH_WizardStyle;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren:
// tqt3stylehint = TQStyle::SH_ItemView_ArrowKeysNavigateIntoChildren;
// retswitch=1;
// break;
// case QStyle::SH_Menu_Mask:
// tqt3stylehint = TQStyle::SH_Menu_Mask;
// retswitch=1;
// break;
// case QStyle::SH_Menu_FlashTriggeredItem:
// tqt3stylehint = TQStyle::SH_Menu_FlashTriggeredItem;
// retswitch=1;
// break;
// case QStyle::SH_Menu_FadeOutOnHide:
// tqt3stylehint = TQStyle::SH_Menu_FadeOutOnHide;
// retswitch=1;
// break;
// case QStyle::SH_SpinBox_ClickAutoRepeatThreshold:
// tqt3stylehint = TQStyle::SH_SpinBox_ClickAutoRepeatThreshold;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_PaintAlternatingRowColorsForEmptyArea:
// tqt3stylehint = TQStyle::SH_ItemView_PaintAlternatingRowColorsForEmptyArea;
// retswitch=1;
// break;
// case QStyle::SH_FormLayoutWrapPolicy:
// tqt3stylehint = TQStyle::SH_FormLayoutWrapPolicy;
// retswitch=1;
// break;
// case QStyle::SH_TabWidget_DefaultTabPosition:
// tqt3stylehint = TQStyle::SH_TabWidget_DefaultTabPosition;
// retswitch=1;
// break;
// case QStyle::SH_ToolBar_Movable:
// tqt3stylehint = TQStyle::SH_ToolBar_Movable;
// retswitch=1;
// break;
// case QStyle::SH_FormLayoutFieldGrowthPolicy:
// tqt3stylehint = TQStyle::SH_FormLayoutFieldGrowthPolicy;
// retswitch=1;
// break;
// case QStyle::SH_FormLayoutFormAlignment:
// tqt3stylehint = TQStyle::SH_FormLayoutFormAlignment;
// retswitch=1;
// break;
// case QStyle::SH_FormLayoutLabelAlignment:
// tqt3stylehint = TQStyle::SH_FormLayoutLabelAlignment;
// retswitch=1;
// break;
// case QStyle::SH_ItemView_DrawDelegateFrame:
// tqt3stylehint = TQStyle::SH_ItemView_DrawDelegateFrame;
// retswitch=1;
// break;
// case QStyle::SH_TabBar_CloseButtonPosition:
// tqt3stylehint = TQStyle::SH_TabBar_CloseButtonPosition;
// retswitch=1;
// break;
// case QStyle::SH_DockWidget_ButtonsHaveFrame:
// tqt3stylehint = TQStyle::SH_DockWidget_ButtonsHaveFrame;
// retswitch=1;
// break;
// case QStyle::SH_ToolButtonStyle:
// tqt3stylehint = TQStyle::SH_ToolButtonStyle;
// retswitch=1;
// break;
// case QStyle::SH_RequestSoftwareInputPanel:
// tqt3stylehint = TQStyle::SH_RequestSoftwareInputPanel;
// retswitch=1;
// break;
default:
#ifdef DEBUG_WARNINGS
printf("No hints for Qt4 hint request %d\n\r", hint); fflush(stdout);
#endif
retval = 0;
}
if (retswitch == 1) {
retval = tqApp->style().styleHint(tqt3stylehint, interfaceWidget);
}
else {
if (retswitch == 2) {
// retval was already set
}
else {
// Tell Qt4 to get the information
retval = QCommonStyle::styleHint(hint, opt, w);
}
}
return retval;
}
int SimpleStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QWidget *w ) const
{
int retval = 0;
@ -1185,6 +1952,15 @@ TQWidget* SimpleStyle::initializeInterfaceWidget(TQt3WidgetType wt, const QWidge
QList<QAction*> qt4menuactions;
QAction* currentAction;
TQColor bgcolor;
// If the interface widget was already initialized for this widget then do nothing
// This is a very simplistic algorithm that should probably be replaced with a full hashtable lookup scheme
if (m_previousQt4InterfaceWidget == w) {
return m_previousTQt3InterfaceWidget;
}
m_previousQt4InterfaceWidget = w;
switch (wt) {
case TQT3WT_TQProgressBar:
interfaceWidget = m_tqt3progressbar_widget;
@ -1278,7 +2054,7 @@ TQWidget* SimpleStyle::initializeInterfaceWidget(TQt3WidgetType wt, const QWidge
m_tqt3combobox_widget->insertItem(convertQt4ToTQt3String(qt4combobox_widget->itemText(i)), i);
}
else {
m_tqt3combobox_widget->insertItem(convertQt4ToTQt3Pixmap(qt4combobox_widget->itemIcon(i)), convertQt4ToTQt3String(qt4combobox_widget->itemText(i)), i);
m_tqt3combobox_widget->insertItem(convertQt4ToTQt3Pixmap(qt4combobox_widget->itemIcon(i), m_tqt3IconSize_Small), convertQt4ToTQt3String(qt4combobox_widget->itemText(i)), i);
}
}
m_tqt3combobox_widget->setEditable(qt4combobox_widget->isEditable());
@ -1445,10 +2221,21 @@ TQWidget* SimpleStyle::initializeInterfaceWidget(TQt3WidgetType wt, const QWidge
// Construct an internal TQTitleBar widget from the options and widget provided by Qt4
m_tqt3titlebar_widget->setGeometry(qt4styleoptions->rect.x(), qt4styleoptions->rect.y(), qt4styleoptions->rect.width(), qt4styleoptions->rect.height());
m_tqt3titlebar_widget->setCaption(convertQt4ToTQt3String(qt4titlebar_options->text));
m_tqt3titlebar_widget->setIcon(convertQt4ToTQt3Pixmap(qt4titlebar_options->icon));
m_tqt3titlebar_widget->setActive(qt4titlebar_options->titleBarState & Qt::WindowActive);
// HACK
// TQt3 does not know how to handle transparent icons in title bars,
// so assume that the titlebar is uniform in color and draw the icon over the background color
if (m_tqt3titlebar_widget->isActive()) {
bgcolor = convertQt4ToTQt3Palette(qt4styleoptions->palette).active().highlight();
}
else {
bgcolor = convertQt4ToTQt3Palette(qt4styleoptions->palette).inactive().highlight();
}
m_tqt3titlebar_widget->setIcon(convertQt4ToTQt3Pixmap(qt4titlebar_options->icon, m_tqt3IconSize_Small, false, &bgcolor));
}
m_previousTQt3InterfaceWidget = interfaceWidget;
return interfaceWidget;
}
@ -1648,6 +2435,14 @@ void SimpleStyle::drawComplexControl(ComplexControl control, const QStyleOptionC
// if (tbopt->activeSubControls & SC_TitleBarContextHelpButton) {
// subControlActive = subControlActive | TQStyle::SC_TitleBarContextHelpButton;
// }
// HACK
if (static_cast<TQTitleBar*>(interfaceWidget)->isActive()) {
interfaceWidget->setPalette(TQPalette(tqt3palette.active(), tqt3palette.active(), tqt3palette.active()));
}
else {
interfaceWidget->setPalette(TQPalette(tqt3palette.inactive(), tqt3palette.inactive(), tqt3palette.inactive()));
}
}
break;
case CC_GroupBox:
@ -1678,7 +2473,7 @@ void SimpleStyle::drawComplexControl(ComplexControl control, const QStyleOptionC
if (tqtCC == TQStyle::CC_TitleBar) {
// TQt3 is expecting to see a rect() from the titlebar that excludes the window frame,
// while Qt4 provides the entire rectangle (including the frame) via the widget/QStyleOptionTitleBar
// This is due to the fact that under TQt3 the titlebar is a correctly position widget,
// This is due to the fact that under TQt3 the titlebar is a correctly positioned widget,
// whereas under Qt4 the titlebar is part of the base widget itself.
// Compensate...
if (interfaceWidget) {
@ -2079,6 +2874,10 @@ void SimpleStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QP
tqtPE = TQStyle::PE_GroupBoxFrame;
tqt3opt = TQStyleOption(static_cast<const QStyleOptionFrame*>(opt)->lineWidth, static_cast<const QStyleOptionFrame*>(opt)->midLineWidth);
break;
case QStyle::PE_FrameWindow:
tqtPE = TQStyle::PE_WindowFrame;
tqt3opt = TQStyleOption(static_cast<const QStyleOptionFrame*>(opt)->lineWidth, static_cast<const QStyleOptionFrame*>(opt)->midLineWidth);
break;
case QStyle::PE_FrameFocusRect:
// HACK
// Qt4 tries to draw a focus rectangle around the entire tab
@ -2177,9 +2976,6 @@ void SimpleStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QP
case QStyle::PE_IndicatorSpinMinus:
tqtPE = TQStyle::PE_SpinWidgetMinus;
break;
case QStyle::PE_FrameWindow:
tqtPE = TQStyle::PE_WindowFrame;
break;
case QStyle::PE_IndicatorTabTear:
NO_QT3_EQUIVALENT
break;

@ -20,6 +20,7 @@
#define SIMPLESTYLE_H
#include <QtGui/QWindowsStyle>
#include <QFileDialog>
QT_BEGIN_NAMESPACE
class QPalette;
@ -38,6 +39,8 @@ class TQSpinWidget;
class TQTitleBar;
class TQMenuBar;
class KAboutData;
enum TQt3WidgetType {
TQT3WT_NONE,
TQT3WT_TQProgressBar,
@ -72,6 +75,9 @@ public:
QRect subElementRect(SubElement element, const QStyleOption * option, const QWidget * widget = 0) const;
int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const;
int styleHint(StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const;
QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const;
private:
TQWidget* initializeInterfaceWidget(TQt3WidgetType wt, const QWidget * widget, const QStyleOption* qt4styleoptions = 0) const;
@ -105,6 +111,12 @@ private:
int m_tqt3IconSize_Large;
int m_tqt3IconSize_Listview;
int m_tqt3IconSize_Button;
int m_tqt3DialogButtons_ShowIcons;
mutable const QWidget* m_previousQt4InterfaceWidget;
mutable TQWidget* m_previousTQt3InterfaceWidget;
KAboutData* m_aboutData;
};
#endif

Loading…
Cancel
Save