From 7506cadc8d243931a745a50ff4a83c89af95a19f Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 10 Mar 2012 16:08:00 -0600 Subject: [PATCH] Initial import --- Makefile | 178 ++++ plugin/Makefile | 271 +++++ plugin/plugin.pro | 28 + plugin/simplestyle.cpp | 1586 +++++++++++++++++++++++++++++ plugin/simplestyle.h | 75 ++ plugin/simplestyleplugin.cpp | 64 ++ plugin/simplestyleplugin.h | 64 ++ plugin/tdeqt4painter.cpp | 772 ++++++++++++++ plugin/tdeqt4painter.h | 49 + styleplugin.pro | 13 + styles/libsimplestyleplugin.so | Bin 0 -> 144021 bytes stylewindow/Makefile | 239 +++++ stylewindow/main.cpp | 57 ++ stylewindow/stylewindow.cpp | 91 ++ stylewindow/stylewindow.h | 54 + stylewindow/stylewindow.pro | 19 + thingstofix.txt | 47 + tqt3reference/Makefile | 167 +++ tqt3reference/main.cpp | 56 + tqt3reference/stylewindow.cpp | 114 +++ tqt3reference/stylewindow.h | 54 + tqt3reference/stylewindow.pro | 24 + unstyledwindow/Makefile | 239 +++++ unstyledwindow/main.cpp | 57 ++ unstyledwindow/stylewindow.cpp | 87 ++ unstyledwindow/stylewindow.h | 54 + unstyledwindow/unstyledwindow.pro | 19 + 27 files changed, 4478 insertions(+) create mode 100644 Makefile create mode 100644 plugin/Makefile create mode 100644 plugin/plugin.pro create mode 100644 plugin/simplestyle.cpp create mode 100644 plugin/simplestyle.h create mode 100644 plugin/simplestyleplugin.cpp create mode 100644 plugin/simplestyleplugin.h create mode 100644 plugin/tdeqt4painter.cpp create mode 100644 plugin/tdeqt4painter.h create mode 100644 styleplugin.pro create mode 100755 styles/libsimplestyleplugin.so create mode 100644 stylewindow/Makefile create mode 100644 stylewindow/main.cpp create mode 100644 stylewindow/stylewindow.cpp create mode 100644 stylewindow/stylewindow.h create mode 100644 stylewindow/stylewindow.pro create mode 100644 thingstofix.txt create mode 100644 tqt3reference/Makefile create mode 100644 tqt3reference/main.cpp create mode 100644 tqt3reference/stylewindow.cpp create mode 100644 tqt3reference/stylewindow.h create mode 100644 tqt3reference/stylewindow.pro create mode 100644 unstyledwindow/Makefile create mode 100644 unstyledwindow/main.cpp create mode 100644 unstyledwindow/stylewindow.cpp create mode 100644 unstyledwindow/stylewindow.h create mode 100644 unstyledwindow/unstyledwindow.pro diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..780c5e8 --- /dev/null +++ b/Makefile @@ -0,0 +1,178 @@ +############################################################################# +# Makefile for building: styleplugin +# Generated by qmake (2.01a) (Qt 4.7.0) on: Sat Mar 10 16:06:16 2012 +# Project: styleplugin.pro +# Template: subdirs +# Command: /usr/bin/qmake-qt4 -o Makefile styleplugin.pro +############################################################################# + +first: make_default +MAKEFILE = Makefile +QMAKE = /usr/bin/qmake-qt4 +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +SUBTARGETS = \ + sub-stylewindow \ + sub-plugin \ + sub-unstyledwindow + +stylewindow//$(MAKEFILE): + @$(CHK_DIR_EXISTS) stylewindow/ || $(MKDIR) stylewindow/ + cd stylewindow/ && $(QMAKE) /home/eldarion/experimental/qt4-tqt-theme-engine/stylewindow/stylewindow.pro -o $(MAKEFILE) +sub-stylewindow-qmake_all: FORCE + @$(CHK_DIR_EXISTS) stylewindow/ || $(MKDIR) stylewindow/ + cd stylewindow/ && $(QMAKE) /home/eldarion/experimental/qt4-tqt-theme-engine/stylewindow/stylewindow.pro -o $(MAKEFILE) +sub-stylewindow: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) +sub-stylewindow-make_default: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) +sub-stylewindow-make_first: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) first +sub-stylewindow-all: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) all +sub-stylewindow-clean: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) clean +sub-stylewindow-distclean: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) distclean +sub-stylewindow-install_subtargets: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) install +sub-stylewindow-uninstall_subtargets: stylewindow//$(MAKEFILE) FORCE + cd stylewindow/ && $(MAKE) -f $(MAKEFILE) uninstall +plugin//$(MAKEFILE): + @$(CHK_DIR_EXISTS) plugin/ || $(MKDIR) plugin/ + cd plugin/ && $(QMAKE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/plugin.pro -o $(MAKEFILE) +sub-plugin-qmake_all: FORCE + @$(CHK_DIR_EXISTS) plugin/ || $(MKDIR) plugin/ + cd plugin/ && $(QMAKE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/plugin.pro -o $(MAKEFILE) +sub-plugin: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) +sub-plugin-make_default: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) +sub-plugin-make_first: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) first +sub-plugin-all: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) all +sub-plugin-clean: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) clean +sub-plugin-distclean: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) distclean +sub-plugin-install_subtargets: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) install +sub-plugin-uninstall_subtargets: plugin//$(MAKEFILE) FORCE + cd plugin/ && $(MAKE) -f $(MAKEFILE) uninstall +unstyledwindow//$(MAKEFILE): + @$(CHK_DIR_EXISTS) unstyledwindow/ || $(MKDIR) unstyledwindow/ + cd unstyledwindow/ && $(QMAKE) /home/eldarion/experimental/qt4-tqt-theme-engine/unstyledwindow/unstyledwindow.pro -o $(MAKEFILE) +sub-unstyledwindow-qmake_all: FORCE + @$(CHK_DIR_EXISTS) unstyledwindow/ || $(MKDIR) unstyledwindow/ + cd unstyledwindow/ && $(QMAKE) /home/eldarion/experimental/qt4-tqt-theme-engine/unstyledwindow/unstyledwindow.pro -o $(MAKEFILE) +sub-unstyledwindow: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) +sub-unstyledwindow-make_default: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) +sub-unstyledwindow-make_first: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) first +sub-unstyledwindow-all: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) all +sub-unstyledwindow-clean: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) clean +sub-unstyledwindow-distclean: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) distclean +sub-unstyledwindow-install_subtargets: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) install +sub-unstyledwindow-uninstall_subtargets: unstyledwindow//$(MAKEFILE) FORCE + cd unstyledwindow/ && $(MAKE) -f $(MAKEFILE) uninstall + +Makefile: styleplugin.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf + $(QMAKE) -o Makefile styleplugin.pro +/usr/share/qt4/mkspecs/common/g++.conf: +/usr/share/qt4/mkspecs/common/unix.conf: +/usr/share/qt4/mkspecs/common/linux.conf: +/usr/share/qt4/mkspecs/qconfig.pri: +/usr/share/qt4/mkspecs/features/qt_functions.prf: +/usr/share/qt4/mkspecs/features/qt_config.prf: +/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/usr/share/qt4/mkspecs/features/default_pre.prf: +/usr/share/qt4/mkspecs/features/release.prf: +/usr/share/qt4/mkspecs/features/default_post.prf: +/usr/share/qt4/mkspecs/features/warn_on.prf: +/usr/share/qt4/mkspecs/features/qt.prf: +/usr/share/qt4/mkspecs/features/unix/thread.prf: +/usr/share/qt4/mkspecs/features/moc.prf: +/usr/share/qt4/mkspecs/features/resources.prf: +/usr/share/qt4/mkspecs/features/uic.prf: +/usr/share/qt4/mkspecs/features/yacc.prf: +/usr/share/qt4/mkspecs/features/lex.prf: +/usr/share/qt4/mkspecs/features/include_source_dir.prf: +qmake: qmake_all FORCE + @$(QMAKE) -o Makefile styleplugin.pro + +qmake_all: sub-stylewindow-qmake_all sub-plugin-qmake_all sub-unstyledwindow-qmake_all FORCE + +make_default: sub-stylewindow-make_default sub-plugin-make_default sub-unstyledwindow-make_default FORCE +make_first: sub-stylewindow-make_first sub-plugin-make_first sub-unstyledwindow-make_first FORCE +all: sub-stylewindow-all sub-plugin-all sub-unstyledwindow-all FORCE +clean: sub-stylewindow-clean sub-plugin-clean sub-unstyledwindow-clean FORCE +distclean: sub-stylewindow-distclean sub-plugin-distclean sub-unstyledwindow-distclean FORCE + -$(DEL_FILE) Makefile +install_subtargets: sub-stylewindow-install_subtargets sub-plugin-install_subtargets sub-unstyledwindow-install_subtargets FORCE +uninstall_subtargets: sub-stylewindow-uninstall_subtargets sub-plugin-uninstall_subtargets sub-unstyledwindow-uninstall_subtargets FORCE + +sub-stylewindow-check: stylewindow/$(MAKEFILE) + cd stylewindow/ && $(MAKE) check +sub-plugin-check: plugin/$(MAKEFILE) + cd plugin/ && $(MAKE) check +sub-unstyledwindow-check: unstyledwindow/$(MAKEFILE) + cd unstyledwindow/ && $(MAKE) check +check: sub-stylewindow-check sub-plugin-check sub-unstyledwindow-check + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all +install_sources: FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/ || $(MKDIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/styleplugin.pro $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/ + + +uninstall_sources: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styleplugin.pro + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/ + + +install: install_subtargets install_sources FORCE + +uninstall: uninstall_sources uninstall_subtargets FORCE + +FORCE: + diff --git a/plugin/Makefile b/plugin/Makefile new file mode 100644 index 0000000..a128159 --- /dev/null +++ b/plugin/Makefile @@ -0,0 +1,271 @@ +############################################################################# +# Makefile for building: libsimplestyleplugin.so +# Generated by qmake (2.01a) (Qt 4.7.0) on: Sat Mar 10 16:06:19 2012 +# Project: plugin.pro +# Template: lib +# Command: /usr/bin/qmake-qt4 -o Makefile plugin.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +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 -L/usr/lib -ltqt -ltqt-mt -L /opt/trinity/lib -lDCOP -ltdecore -lQtGui -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake-qt4 +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = simplestyle.cpp \ + simplestyleplugin.cpp \ + tdeqt4painter.cpp moc_simplestyle.cpp \ + moc_simplestyleplugin.cpp +OBJECTS = simplestyle.o \ + simplestyleplugin.o \ + tdeqt4painter.o \ + moc_simplestyle.o \ + moc_simplestyleplugin.o +DIST = /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf \ + plugin.pro +QMAKE_TARGET = simplestyleplugin +DESTDIR = ../styles/ +TARGET = libsimplestyleplugin.so +TARGETD = libsimplestyleplugin.so + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile ../styles/$(TARGET) + +../styles/$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + @$(CHK_DIR_EXISTS) ../styles/ || $(MKDIR) ../styles/ + -$(DEL_FILE) $(TARGET) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + -$(MOVE) $(TARGET) ../styles/ + + + +Makefile: plugin.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf \ + /usr/lib/libQtGui.prl \ + /usr/lib/libQtCore.prl + $(QMAKE) -o Makefile plugin.pro +/usr/share/qt4/mkspecs/common/g++.conf: +/usr/share/qt4/mkspecs/common/unix.conf: +/usr/share/qt4/mkspecs/common/linux.conf: +/usr/share/qt4/mkspecs/qconfig.pri: +/usr/share/qt4/mkspecs/features/qt_functions.prf: +/usr/share/qt4/mkspecs/features/qt_config.prf: +/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/usr/share/qt4/mkspecs/features/default_pre.prf: +/usr/share/qt4/mkspecs/features/release.prf: +/usr/share/qt4/mkspecs/features/default_post.prf: +/usr/share/qt4/mkspecs/features/warn_on.prf: +/usr/share/qt4/mkspecs/features/qt.prf: +/usr/share/qt4/mkspecs/features/unix/thread.prf: +/usr/share/qt4/mkspecs/features/moc.prf: +/usr/share/qt4/mkspecs/features/resources.prf: +/usr/share/qt4/mkspecs/features/uic.prf: +/usr/share/qt4/mkspecs/features/yacc.prf: +/usr/share/qt4/mkspecs/features/lex.prf: +/usr/share/qt4/mkspecs/features/include_source_dir.prf: +/usr/lib/libQtGui.prl: +/usr/lib/libQtCore.prl: +qmake: FORCE + @$(QMAKE) -o Makefile plugin.pro + +dist: + @$(CHK_DIR_EXISTS) .tmp/simplestyleplugin1.0.0 || $(MKDIR) .tmp/simplestyleplugin1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/simplestyleplugin1.0.0/ && $(COPY_FILE) --parents simplestyle.h simplestyleplugin.h tdeqt4painter.h .tmp/simplestyleplugin1.0.0/ && $(COPY_FILE) --parents simplestyle.cpp simplestyleplugin.cpp tdeqt4painter.cpp .tmp/simplestyleplugin1.0.0/ && (cd `dirname .tmp/simplestyleplugin1.0.0` && $(TAR) simplestyleplugin1.0.0.tar simplestyleplugin1.0.0 && $(COMPRESS) simplestyleplugin1.0.0.tar) && $(MOVE) `dirname .tmp/simplestyleplugin1.0.0`/simplestyleplugin1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/simplestyleplugin1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile + + +check: first + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: moc_simplestyle.cpp moc_simplestyleplugin.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_simplestyle.cpp moc_simplestyleplugin.cpp +moc_simplestyle.cpp: simplestyle.h + /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) simplestyle.h -o moc_simplestyle.cpp + +moc_simplestyleplugin.cpp: simplestyleplugin.h + /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) simplestyleplugin.h -o moc_simplestyleplugin.cpp + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: simplestyle.moc +compiler_moc_source_clean: + -$(DEL_FILE) simplestyle.moc +simplestyle.moc: simplestyle.h \ + tdeqt4painter.h \ + simplestyle.cpp + /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) simplestyle.cpp -o simplestyle.moc + +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean compiler_moc_source_clean + +####### Compile + +simplestyle.o: simplestyle.cpp simplestyle.h \ + tdeqt4painter.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o simplestyle.o simplestyle.cpp + +simplestyleplugin.o: simplestyleplugin.cpp simplestyleplugin.h \ + simplestyle.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o simplestyleplugin.o simplestyleplugin.cpp + +tdeqt4painter.o: tdeqt4painter.cpp tdeqt4painter.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tdeqt4painter.o tdeqt4painter.cpp + +moc_simplestyle.o: moc_simplestyle.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_simplestyle.o moc_simplestyle.cpp + +moc_simplestyleplugin.o: moc_simplestyleplugin.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_simplestyleplugin.o moc_simplestyleplugin.cpp + +####### Install + +install_target: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styles/ || $(MKDIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styles/ + -$(INSTALL_PROGRAM) "../styles/$(TARGET)" "$(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styles/$(TARGET)" + -$(STRIP) --strip-unneeded "$(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styles/$(TARGET)" + +uninstall_target: FORCE + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styles/$(TARGET)" + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/styles/ + + +install_sources: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ || $(MKDIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/simplestyle.cpp $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/simplestyleplugin.cpp $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/tdeqt4painter.cpp $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/simplestyle.h $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/simplestyleplugin.h $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/tdeqt4painter.h $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/plugin/plugin.pro $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + + +uninstall_sources: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/simplestyle.cpp + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/simplestyleplugin.cpp + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/tdeqt4painter.cpp + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/simplestyle.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/simplestyleplugin.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/tdeqt4painter.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/plugin.pro + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/styleplugin/plugin/ + + +install: install_target install_sources FORCE + +uninstall: uninstall_target uninstall_sources FORCE + +FORCE: + diff --git a/plugin/plugin.pro b/plugin/plugin.pro new file mode 100644 index 0000000..26e8615 --- /dev/null +++ b/plugin/plugin.pro @@ -0,0 +1,28 @@ +#! [0] +TEMPLATE = lib +CONFIG += plugin +HEADERS = simplestyle.h \ + simplestyleplugin.h \ + tdeqt4painter.h +SOURCES = simplestyle.cpp \ + simplestyleplugin.cpp \ + tdeqt4painter.cpp +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 + +#! [0] +DESTDIR = ../styles/ + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/styles +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS plugin.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/plugin +INSTALLS += target sources + +symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + +symbian:TARGET.EPOCALLOWDLLDATA = 1 diff --git a/plugin/simplestyle.cpp b/plugin/simplestyle.cpp new file mode 100644 index 0000000..08299dc --- /dev/null +++ b/plugin/simplestyle.cpp @@ -0,0 +1,1586 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Timothy Pearson. All rights reserved. +** +** This file is part of the TDE Qt4 style interface +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#define TQT_NO_COMPAT_NAMES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#undef Qt + +#include +#include + +#include "simplestyle.h" +#include "tdeqt4painter.h" + +#define INTEGRATE_WITH_TDE 1 + +#ifdef INTEGRATE_WITH_TDE +#undef Q_OBJECT +#define Q_OBJECT TQ_OBJECT +#include +#include +#include +#include +#endif + +#define DEBUG_WARNINGS 1 +// #define DEBUG_SPEW 1 + +inline QColor convertTQt3ToQt4Color(TQColor tqt3color) +{ + return QColor(tqt3color.red(), tqt3color.green(), tqt3color.blue()); +} + +inline TQColor convertQt4ToTQt3Color(QColor qt4color) +{ + return TQColor(qt4color.red(), qt4color.green(), qt4color.blue()); +} + +inline QString convertTQt3ToQt4String(TQString tqt3string) +{ + return QString::fromUtf8(tqt3string.utf8().data()); +} + +inline TQString convertQt4ToTQt3String(QString qt4string) +{ + return TQString::fromUtf8(qt4string.toUtf8().data()); +} + +inline TQIconSet convertQt4ToTQt3IconSet(QIcon qt4icon) +{ + int i=0; + int j=0; + QIcon::Mode qt4iconmode; + TQIconSet::Mode tqt3iconmode; + QIcon::State qt4iconstate; + TQIconSet::State tqt3iconstate; + + TQIconSet tqt3iconset; + + // Get the maximum icon size stored in the QIcon and generate a pixmap of that size + QSize qt4size = qt4icon.actualSize(QSize(32768,32768)); + + for (i=0;i<3;i++) { + for (j=0;j<2;j++) { + if (i==0) { + qt4iconmode = QIcon::Normal; + tqt3iconmode = TQIconSet::Normal; + } + if (i==1) { + qt4iconmode = QIcon::Disabled; + tqt3iconmode = TQIconSet::Disabled; + } + if (i==2) { + qt4iconmode = QIcon::Active; + tqt3iconmode = TQIconSet::Active; + } + if (j==0) { + qt4iconstate = QIcon::On; + tqt3iconstate = TQIconSet::On; + } + if (j==1) { + qt4iconstate = QIcon::Off; + tqt3iconstate = TQIconSet::Off; + } + QPixmap qt4iconpm = qt4icon.pixmap(qt4size, qt4iconmode, qt4iconstate); + TQPixmap tqtPM(qt4iconpm.width(), qt4iconpm.height(), qt4iconpm.depth()); + QPixmap qtPM = QPixmap::fromX11Pixmap(tqtPM.handle(), QPixmap::ExplicitlyShared); + QPainter qt4painter(&qtPM); + qt4painter.drawPixmap(0, 0, qt4iconpm); + qt4painter.end(); + + tqt3iconset.setPixmap(tqtPM, TQIconSet::Automatic, tqt3iconmode, tqt3iconstate); + } + } + + return tqt3iconset; +} + +inline TQPixmap convertQt4ToTQt3Pixmap(QIcon qt4icon) +{ + // Get the maximum icon size stored in the QIcon and generate a pixmap of that size + QSize qt4size = qt4icon.actualSize(QSize(32768,32768)); + + QPixmap qt4iconpm = qt4icon.pixmap(qt4size); + TQPixmap tqtPM(qt4iconpm.width(), qt4iconpm.height(), qt4iconpm.depth()); + QPixmap qtPM = QPixmap::fromX11Pixmap(tqtPM.handle(), QPixmap::ExplicitlyShared); + QPainter qt4painter(&qtPM); + qt4painter.drawPixmap(0, 0, qt4iconpm); + qt4painter.end(); + + return tqtPM; +} + +inline QRect convertTQt3ToQt4Rect(TQRect tqt3rect) +{ + return QRect(tqt3rect.x(), tqt3rect.y(), tqt3rect.width(), tqt3rect.height()); +} + +inline QBrush convertTQt3ToQt4Brush(TQBrush tqt3brush) +{ + QBrush qt4brush; + TQt::BrushStyle tqt3brushstyle = tqt3brush.style(); + Qt::BrushStyle qt4brushstyle; + + switch ( tqt3brushstyle ) { + case TQt::NoBrush: + qt4brushstyle = Qt::NoBrush; + break; + case TQt::SolidPattern: + qt4brushstyle = Qt::SolidPattern; + break; + case TQt::Dense1Pattern: + qt4brushstyle = Qt::Dense1Pattern; + break; + case TQt::Dense2Pattern: + qt4brushstyle = Qt::Dense2Pattern; + break; + case TQt::Dense3Pattern: + qt4brushstyle = Qt::Dense3Pattern; + break; + case TQt::Dense4Pattern: + qt4brushstyle = Qt::Dense4Pattern; + break; + case TQt::Dense5Pattern: + qt4brushstyle = Qt::Dense5Pattern; + break; + case TQt::Dense6Pattern: + qt4brushstyle = Qt::Dense6Pattern; + break; + case TQt::Dense7Pattern: + qt4brushstyle = Qt::Dense7Pattern; + break; + case TQt::HorPattern: + qt4brushstyle = Qt::HorPattern; + break; + case TQt::VerPattern: + qt4brushstyle = Qt::VerPattern; + break; + case TQt::CrossPattern: + qt4brushstyle = Qt::CrossPattern; + break; + case TQt::BDiagPattern: + qt4brushstyle = Qt::BDiagPattern; + break; + case TQt::FDiagPattern: + qt4brushstyle = Qt::FDiagPattern; + break; + case TQt::DiagCrossPattern: + qt4brushstyle = Qt::DiagCrossPattern; + break; + case TQt::CustomPattern: + qt4brushstyle = Qt::TexturePattern; + break; + default: + qt4brushstyle = Qt::NoBrush; +#if defined(QT_CHECK_RANGE) + tqWarning( "convertTQt3ToQt4Brush: Invalid brush style %d", tqt3brushstyle ); +#endif + } + qt4brush.setStyle(qt4brushstyle); + TQColor qt3color = tqt3brush.color(); + qt4brush.setColor(QColor(qt3color.red(), qt3color.green(), qt3color.blue(), 255)); + if (qt4brushstyle == Qt::TexturePattern) { + TQPixmap tqtPM = *tqt3brush.pixmap(); + QPixmap qtPM = QPixmap::fromX11Pixmap(tqtPM.handle(), QPixmap::ImplicitlyShared); + qt4brush.setTexture(qtPM); + } + + return qt4brush; +} + +inline TQBrush convertQt4ToTQt3Brush(QBrush qt4brush) +{ + TQBrush tqt3brush; + Qt::BrushStyle qt4brushstyle = qt4brush.style(); + TQt::BrushStyle tqt3brushstyle; + + switch ( qt4brushstyle ) { + case Qt::NoBrush: + tqt3brushstyle = TQt::NoBrush; + break; + case Qt::SolidPattern: + tqt3brushstyle = TQt::SolidPattern; + break; + case Qt::Dense1Pattern: + tqt3brushstyle = TQt::Dense1Pattern; + break; + case Qt::Dense2Pattern: + tqt3brushstyle = TQt::Dense2Pattern; + break; + case Qt::Dense3Pattern: + tqt3brushstyle = TQt::Dense3Pattern; + break; + case Qt::Dense4Pattern: + tqt3brushstyle = TQt::Dense4Pattern; + break; + case Qt::Dense5Pattern: + tqt3brushstyle = TQt::Dense5Pattern; + break; + case Qt::Dense6Pattern: + tqt3brushstyle = TQt::Dense6Pattern; + break; + case Qt::Dense7Pattern: + tqt3brushstyle = TQt::Dense7Pattern; + break; + case Qt::HorPattern: + tqt3brushstyle = TQt::HorPattern; + break; + case Qt::VerPattern: + tqt3brushstyle = TQt::VerPattern; + break; + case Qt::CrossPattern: + tqt3brushstyle = TQt::CrossPattern; + break; + case Qt::BDiagPattern: + tqt3brushstyle = TQt::BDiagPattern; + break; + case Qt::FDiagPattern: + tqt3brushstyle = TQt::FDiagPattern; + break; + case Qt::DiagCrossPattern: + tqt3brushstyle = TQt::DiagCrossPattern; + break; + case Qt::TexturePattern: + tqt3brushstyle = TQt::CustomPattern; + break; + default: + tqt3brushstyle = TQt::NoBrush; +#if defined(QT_CHECK_RANGE) + tqWarning( "convertQt4ToTQt3Brush: Invalid brush style %d", tqt3brushstyle ); +#endif + } + tqt3brush.setStyle(tqt3brushstyle); + QColor qt4color = qt4brush.color(); + tqt3brush.setColor(TQColor(qt4color.red(), qt4color.green(), qt4color.blue())); + if (tqt3brushstyle == TQt::CustomPattern) { + QPixmap qt4texture = qt4brush.texture(); + TQPixmap tqtPM(qt4texture.width(), qt4texture.height(), qt4texture.depth()); + QPixmap qtPM = QPixmap::fromX11Pixmap(tqtPM.handle(), QPixmap::ExplicitlyShared); + QPainter qt4painter(&qtPM); + qt4painter.drawPixmap(0, 0, qt4texture); + qt4painter.end(); + tqt3brush.setPixmap(tqtPM); + } + + return tqt3brush; +} + +inline QPalette convertTQt3ToQt4Palette(TQPalette tqt3palette) +{ + int i; + QPalette qt4palette; + + // Color groups + TQPalette::ColorGroup tqt3cgroup; + QPalette::ColorGroup qt4cgroup; + TQColor tqt3color; + for (i=0;i<3;i++) { + if (i == 0) { + tqt3cgroup = TQPalette::Disabled; + qt4cgroup = QPalette::Disabled; + } + if (i == 1) { + tqt3cgroup = TQPalette::Active; + qt4cgroup = QPalette::Active; + } + if (i == 2) { + tqt3cgroup = TQPalette::Inactive; + qt4cgroup = QPalette::Inactive; + } + + // Brushes + qt4palette.setBrush(qt4cgroup, QPalette::Background, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Background))); + qt4palette.setBrush(qt4cgroup, QPalette::Foreground, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Foreground))); + qt4palette.setBrush(qt4cgroup, QPalette::Base, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Base))); + qt4palette.setBrush(qt4cgroup, QPalette::Text, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Text))); + qt4palette.setBrush(qt4cgroup, QPalette::Button, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Button))); + qt4palette.setBrush(qt4cgroup, QPalette::ButtonText, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::ButtonText))); + qt4palette.setBrush(qt4cgroup, QPalette::Light, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Light))); + qt4palette.setBrush(qt4cgroup, QPalette::Midlight, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Midlight))); + qt4palette.setBrush(qt4cgroup, QPalette::Dark, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Dark))); + qt4palette.setBrush(qt4cgroup, QPalette::Mid, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Mid))); + qt4palette.setBrush(qt4cgroup, QPalette::Shadow, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Shadow))); + qt4palette.setBrush(qt4cgroup, QPalette::Highlight, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Highlight))); + qt4palette.setBrush(qt4cgroup, QPalette::HighlightedText, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::HighlightedText))); + qt4palette.setBrush(qt4cgroup, QPalette::BrightText, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::BrightText))); + qt4palette.setBrush(qt4cgroup, QPalette::Link, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::Link))); + qt4palette.setBrush(qt4cgroup, QPalette::LinkVisited, convertTQt3ToQt4Brush(tqt3palette.brush(tqt3cgroup, TQColorGroup::LinkVisited))); + + // Colors + qt4palette.setColor(qt4cgroup, QPalette::Background, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Background))); + qt4palette.setColor(qt4cgroup, QPalette::Foreground, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Foreground))); + qt4palette.setColor(qt4cgroup, QPalette::Base, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Base))); + qt4palette.setColor(qt4cgroup, QPalette::Text, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Text))); + qt4palette.setColor(qt4cgroup, QPalette::Button, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Button))); + qt4palette.setColor(qt4cgroup, QPalette::ButtonText, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::ButtonText))); + qt4palette.setColor(qt4cgroup, QPalette::Light, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Light))); + qt4palette.setColor(qt4cgroup, QPalette::Midlight, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Midlight))); + qt4palette.setColor(qt4cgroup, QPalette::Dark, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Dark))); + qt4palette.setColor(qt4cgroup, QPalette::Mid, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Mid))); + qt4palette.setColor(qt4cgroup, QPalette::Shadow, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Shadow))); + qt4palette.setColor(qt4cgroup, QPalette::Highlight, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Highlight))); + qt4palette.setColor(qt4cgroup, QPalette::HighlightedText, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::HighlightedText))); + qt4palette.setColor(qt4cgroup, QPalette::BrightText, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::BrightText))); + qt4palette.setColor(qt4cgroup, QPalette::Link, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::Link))); + qt4palette.setColor(qt4cgroup, QPalette::LinkVisited, convertTQt3ToQt4Color(tqt3palette.color(tqt3cgroup, TQColorGroup::LinkVisited))); + } + + return qt4palette; +} + +inline TQPalette convertQt4ToTQt3Palette(QPalette qt4palette) +{ + int i; + TQPalette tqt3palette; + + // Color groups + TQPalette::ColorGroup tqt3cgroup; + QPalette::ColorGroup qt4cgroup; + TQColor tqt3color; + for (i=0;i<3;i++) { + if (i == 0) { + tqt3cgroup = TQPalette::Disabled; + qt4cgroup = QPalette::Disabled; + } + if (i == 1) { + tqt3cgroup = TQPalette::Active; + qt4cgroup = QPalette::Active; + } + if (i == 2) { + tqt3cgroup = TQPalette::Inactive; + qt4cgroup = QPalette::Inactive; + } + + // Brushes + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Background, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Background))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Foreground, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Foreground))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Base, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Base))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Text, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Text))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Button, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Button))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::ButtonText, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::ButtonText))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Light, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Light))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Midlight, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Midlight))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Dark, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Dark))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Mid, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Mid))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Shadow, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Shadow))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Highlight, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Highlight))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::HighlightedText, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::HighlightedText))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::BrightText, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::BrightText))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::Link, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::Link))); + tqt3palette.setBrush(tqt3cgroup, TQColorGroup::LinkVisited, convertQt4ToTQt3Brush(qt4palette.brush(qt4cgroup, QPalette::LinkVisited))); + + // Colors + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Background, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Background))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Foreground, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Foreground))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Base, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Base))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Text, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Text))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Button, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Button))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::ButtonText, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::ButtonText))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Light, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Light))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Midlight, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Midlight))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Dark, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Dark))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Mid, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Mid))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Shadow, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Shadow))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Highlight, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Highlight))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::HighlightedText, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::HighlightedText))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::BrightText, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::BrightText))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::Link, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::Link))); + tqt3palette.setColor(tqt3cgroup, TQColorGroup::LinkVisited, convertQt4ToTQt3Color(qt4palette.color(qt4cgroup, QPalette::LinkVisited))); + } + + return tqt3palette; +} + +inline TQStyle::SFlags convertQt4ToTQt3SFlags(QStyle::State qt4stateflags, TQt3WidgetType wt) +{ + // Convert sflags + TQStyle::SFlags sflags = 0; + + if (qt4stateflags & QStyle::State_Active) { + if (wt != TQT3WT_TQPopupMenu) { + sflags = sflags | TQStyle::Style_Active; + } + } + if (qt4stateflags & QStyle::State_AutoRaise) { + sflags = sflags | TQStyle::Style_AutoRaise; + } +// if (qt4stateflags & QStyle::State_Children) { +// sflags = sflags | TQStyle::; +// } + if (qt4stateflags & QStyle::State_DownArrow) { + sflags = sflags | TQStyle::Style_Down; + } +// if (qt4stateflags & QStyle::State_Editing) { +// sflags = sflags | TQStyle::; +// } + if (qt4stateflags & QStyle::State_Enabled) { + sflags = sflags | TQStyle::Style_Enabled; + } +// if (qt4stateflags & QStyle::State_HasEditFocus) { +// sflags = sflags | TQStyle::Style_HasFocus; +// } + if (qt4stateflags & QStyle::State_HasFocus) { + sflags = sflags | TQStyle::Style_HasFocus; + } + if (qt4stateflags & QStyle::State_Horizontal) { + sflags = sflags | TQStyle::Style_Horizontal; + } +// if (qt4stateflags & QStyle::State_KeyboardFocusChange) { +// sflags = sflags | TQStyle::; +// } + if (qt4stateflags & QStyle::State_MouseOver) { + sflags = sflags | TQStyle::Style_MouseOver; + } + if (qt4stateflags & QStyle::State_NoChange) { + sflags = sflags | TQStyle::Style_NoChange; + } + if (qt4stateflags & QStyle::State_Off) { + sflags = sflags | TQStyle::Style_Off; + } + if (qt4stateflags & QStyle::State_On) { + sflags = sflags | TQStyle::Style_On; + } + if (qt4stateflags & QStyle::State_Raised) { + sflags = sflags | TQStyle::Style_Raised; + } +// if (qt4stateflags & QStyle::State_ReadOnly) { +// sflags = sflags | TQStyle::; +// } + if (qt4stateflags & QStyle::State_Selected) { + if (wt == TQT3WT_TQPopupMenu) { + sflags = sflags | TQStyle::Style_Active; + } + sflags = sflags | TQStyle::Style_Selected; + } +// if (qt4stateflags & QStyle::State_Item) { +// sflags = sflags | TQStyle::; +// } +// if (qt4stateflags & QStyle::State_Open) { +// sflags = sflags | TQStyle::; +// } +// if (qt4stateflags & QStyle::State_Sibling) { +// sflags = sflags | TQStyle::; +// } + if (qt4stateflags & QStyle::State_Sunken) { + sflags = sflags | TQStyle::Style_Sunken; + } + if (qt4stateflags & QStyle::State_UpArrow) { + sflags = sflags | TQStyle::Style_Up; + } +// if (qt4stateflags & QStyle::State_Mini) { +// sflags = sflags | TQStyle::; +// } +// if (qt4stateflags & QStyle::State_Small) { +// sflags = sflags | TQStyle::; +// } + + return sflags; +} + +SimpleStyle::SimpleStyle() +{ +#ifdef INTEGRATE_WITH_TDE + if (!tqApp) { + // Initialize KApplication required data structures + int argc = 1; + char** argv; + // Supply it with fake data to keep KApplication happy + argv = (char**) malloc(sizeof(char*)); + argv[0] = (char*) malloc(sizeof(char) * 19); + strncpy(argv[0], "SimpleStyle", 19); + + KAboutData aboutData("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); + + // Qt4 can be SO STUPID sometimes...why can't I get the X11 display directly from qApp?!?!?? + QWidget myhackedwidget; + new KApplication(myhackedwidget.x11Info().display()); + } + + // Set the Qt4 icon set to the TDE icon set + QIcon::setThemeName(convertTQt3ToQt4String(KIconTheme::current())); +#else // INTEGRATE_WITH_TDE + if (!tqApp) { + // Qt4 can be SO STUPID sometimes...why can't I get the X11 display directly from qApp?!?!?? + QWidget myhackedwidget; + new TQApplication(myhackedwidget.x11Info().display()); + } +#endif // INTEGRATE_WITH_TDE + + // Set the Qt4 palette to the TQt3 palette + qApp->setPalette(convertTQt3ToQt4Palette(tqApp->palette())); + + // Create interface widgets + m_tqt3parent_widget = new TQWidget(); + + 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_tqt3popupmenu_widget = new TQPopupMenu(m_tqt3parent_widget); + m_tqt3combobox_widget = new TQComboBox(m_tqt3parent_widget); +} + +SimpleStyle::~SimpleStyle() +{ +// delete tqApp; + + // Delete interface widgets + // Widgets are deleted when their parent is deleted...these lines will cause a crash on exit +// delete m_tqt3progressbar_widget; +// delete m_tqt3tabbar_widget; +// delete m_tqt3radiobutton_widget; +// delete m_tqt3popupmenu_widget; +// delete m_tqt3combobox_widget; + + // FIXME + // Verify I'm not leaking memory like a sieve when this is commented out!!! +// delete m_tqt3parent_widget; +} + +void SimpleStyle::polish(QPalette &palette) +{ + // FIXME + // Figure out some way to polish the Qt4 widgets with the Qt3 polish method + // This probably involves modifying Qt3 to specify a painter... +} + +void SimpleStyle::polish(QWidget *widget) +{ + // HACK + // Many TQt3 styles need to be notified when their widgets are moused over + // The only way we can really do that here is to force a repaint on mouse entry/mouse exit + // I figure if Qt4 programmers and users can put up with Qt4's overall poor raster graphics + // performance, they can also put up with this hack... + widget->setMouseTracking(true); + widget->installEventFilter(this); +} + +void SimpleStyle::unpolish(QWidget *widget) +{ + // HACK + // See SimpleStyle::polish + widget->setMouseTracking(false); + widget->removeEventFilter(this); +} + +bool SimpleStyle::eventFilter(QObject *obj, QEvent *ev) +{ + // HACK + // See SimpleStyle::polish + if (!obj->isWidgetType() ) { + return false; + } + + QWidget* widget = static_cast(obj); + + if ((ev->type() == QEvent::FocusIn) || (ev->type() == QEvent::FocusOut) + || (ev->type() == QEvent::Enter) || (ev->type() == QEvent::Leave) || (ev->type() == QEvent::Wheel)) { + widget->repaint(); + } + else { +// if (dynamic_cast(obj)) { + if (ev->type() == QEvent::MouseMove) { + QTabBar *tabbar = dynamic_cast(obj); + QMouseEvent *me = dynamic_cast(ev); + if (tabbar && me) { + // FIXME + // Avoid unnecessary repaints (which otherwise would occour on every + // MouseMove event causing high cpu load). + // FIXME + // Tab highlighting won't work unless we keep the same tabbar object, + // and specifically tab objects, while the mouse is being moved within + // the tabbar...also the eventFilter method of the style needs to be called... + + bool repaint = true; + +// QTab *tab = tabbar->selectTab(me->pos() ); +// if (hoverTab == tab) +// repaint = false; +// hoverTab = tab; + + if (repaint) + tabbar->repaint(); + } + } +// } + } + + // Transparently pass the event on to any other handlers + return false; +} + +int SimpleStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QWidget *w ) const +{ + int retval = 0; + TQWidget* interfaceWidget = 0; + + char retswitch = 0; + TQStyle::PixelMetric tqt3pixelmetric = TQStyle::PM_CustomBase; + switch (metric) { + case QStyle::PM_ButtonMargin: + tqt3pixelmetric = TQStyle::PM_ButtonMargin; + retswitch = 1; + break; +// case QStyle::PM_DockWidgetTitleBarButtonMargin: +// tqt3pixelmetric = TQStyle::; +// retswitch = 1; +// break; + case QStyle::PM_ButtonDefaultIndicator: + tqt3pixelmetric = TQStyle::PM_ButtonDefaultIndicator; + retswitch = 1; + break; + case QStyle::PM_MenuButtonIndicator: + tqt3pixelmetric = TQStyle::PM_MenuButtonIndicator; + retswitch = 1; + break; + case QStyle::PM_ButtonShiftHorizontal: + tqt3pixelmetric = TQStyle::PM_ButtonShiftHorizontal; + retswitch = 1; + break; + case QStyle::PM_ButtonShiftVertical: + tqt3pixelmetric = TQStyle::PM_ButtonShiftVertical; + retswitch = 1; + break; + case QStyle::PM_DefaultFrameWidth: + tqt3pixelmetric = TQStyle::PM_DefaultFrameWidth; + retswitch = 1; + break; + case QStyle::PM_SpinBoxFrameWidth: + tqt3pixelmetric = TQStyle::PM_SpinBoxFrameWidth; + retswitch = 1; + break; +// case QStyle::PM_ComboBoxFrameWidth: +// tqt3pixelmetric = TQStyle::PM_ComboBoxFrameWidth; +// retswitch = 1; +// break; + case QStyle::PM_MDIFrameWidth: + tqt3pixelmetric = TQStyle::PM_MDIFrameWidth; + retswitch = 1; + break; +// case QStyle::PM_MdiSubWindowFrameWidth: +// tqt3pixelmetric = TQStyle::PM_MdiSubWindowFrameWidth; +// retswitch = 1; +// break; + case QStyle::PM_MDIMinimizedWidth: + tqt3pixelmetric = TQStyle::PM_MDIMinimizedWidth; + retswitch = 1; + break; +// case QStyle::PM_MdiSubWindowMinimizedWidth: +// tqt3pixelmetric = TQStyle::PM_MdiSubWindowMinimizedWidth; +// retswitch = 1; +// break; + case QStyle::PM_LayoutLeftMargin: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_LayoutTopMargin: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_LayoutRightMargin: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_LayoutBottomMargin: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_LayoutHorizontalSpacing: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_LayoutVerticalSpacing: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_MaximumDragDistance: + tqt3pixelmetric = TQStyle::PM_MaximumDragDistance; + retswitch = 1; + break; + case QStyle::PM_ScrollBarExtent: + tqt3pixelmetric = TQStyle::PM_ScrollBarExtent; + retswitch = 1; + break; + case QStyle::PM_ScrollBarSliderMin: + tqt3pixelmetric = TQStyle::PM_ScrollBarSliderMin; + retswitch = 1; + break; + case QStyle::PM_SliderThickness: + tqt3pixelmetric = TQStyle::PM_SliderThickness; + retswitch = 1; + break; + case QStyle::PM_SliderControlThickness: + tqt3pixelmetric = TQStyle::PM_SliderControlThickness; + retswitch = 1; + break; + case QStyle::PM_SliderLength: + tqt3pixelmetric = TQStyle::PM_SliderLength; + retswitch = 1; + break; + case QStyle::PM_SliderTickmarkOffset: + tqt3pixelmetric = TQStyle::PM_SliderTickmarkOffset; + retswitch = 1; + break; + case QStyle::PM_SliderSpaceAvailable: + tqt3pixelmetric = TQStyle::PM_SliderSpaceAvailable; + retswitch = 1; + break; + case QStyle::PM_DockWidgetSeparatorExtent: + tqt3pixelmetric = TQStyle::PM_DockWindowSeparatorExtent; + retswitch = 1; + break; + case QStyle::PM_DockWidgetHandleExtent: + tqt3pixelmetric = TQStyle::PM_DockWindowHandleExtent; + retswitch = 1; + break; + case QStyle::PM_DockWidgetFrameWidth: + tqt3pixelmetric = TQStyle::PM_DockWindowFrameWidth; + retswitch = 1; + break; +// case QStyle::PM_DockWidgetTitleMargin: +// tqt3pixelmetric = TQStyle::PM_DockWindowTitleMargin; +// retswitch = 1; +// break; + case QStyle::PM_MenuBarPanelWidth: + tqt3pixelmetric = TQStyle::PM_MenuBarFrameWidth; + retswitch = 1; + break; + case QStyle::PM_MenuBarItemSpacing: + tqt3pixelmetric = TQStyle::PM_MenuBarItemSpacing; + retswitch = 1; + break; +// case QStyle::PM_MenuBarHMargin: +// tqt3pixelmetric = TQStyle::PM_MenuBarHMargin; +// retswitch = 1; +// break; +// case QStyle::PM_MenuBarVMargin: +// tqt3pixelmetric = TQStyle::PM_MenuBarVMargin; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarFrameWidth: +// tqt3pixelmetric = TQStyle::PM_ToolBarFrameWidth; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarHandleExtent: +// tqt3pixelmetric = TQStyle::PM_ToolBarHandleExtent; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarItemMargin: +// tqt3pixelmetric = TQStyle::PM_ToolBarItemMargin; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarItemSpacing: +// tqt3pixelmetric = TQStyle::PM_ToolBarItemSpacing; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarSeparatorExtent: +// tqt3pixelmetric = TQStyle::PM_ToolBarSeparatorExtent; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarExtensionExtent: +// tqt3pixelmetric = TQStyle::PM_ToolBarExtensionExtent; +// retswitch = 1; +// break; + case QStyle::PM_TabBarTabOverlap: + tqt3pixelmetric = TQStyle::PM_TabBarTabOverlap; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarTabHSpace: + tqt3pixelmetric = TQStyle::PM_TabBarTabHSpace; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarTabVSpace: + tqt3pixelmetric = TQStyle::PM_TabBarTabVSpace; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarBaseHeight: + tqt3pixelmetric = TQStyle::PM_TabBarBaseHeight; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarBaseOverlap: + tqt3pixelmetric = TQStyle::PM_TabBarBaseOverlap; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarScrollButtonWidth: + tqt3pixelmetric = TQStyle::PM_TabBarScrollButtonWidth; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarTabShiftHorizontal: + tqt3pixelmetric = TQStyle::PM_TabBarTabShiftHorizontal; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_TabBarTabShiftVertical: + tqt3pixelmetric = TQStyle::PM_TabBarTabShiftVertical; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + retswitch = 1; + break; + case QStyle::PM_ProgressBarChunkWidth: + tqt3pixelmetric = TQStyle::PM_ProgressBarChunkWidth; + retswitch = 1; + break; + case QStyle::PM_SplitterWidth: + tqt3pixelmetric = TQStyle::PM_SplitterWidth; + retswitch = 1; + break; + case QStyle::PM_TitleBarHeight: + tqt3pixelmetric = TQStyle::PM_TitleBarHeight; + retswitch = 1; + break; + case QStyle::PM_IndicatorWidth: + tqt3pixelmetric = TQStyle::PM_IndicatorWidth; + retswitch = 1; + break; + case QStyle::PM_IndicatorHeight: + tqt3pixelmetric = TQStyle::PM_IndicatorHeight; + retswitch = 1; + break; + case QStyle::PM_ExclusiveIndicatorWidth: + tqt3pixelmetric = TQStyle::PM_ExclusiveIndicatorWidth; + retswitch = 1; + break; + case QStyle::PM_ExclusiveIndicatorHeight: + tqt3pixelmetric = TQStyle::PM_ExclusiveIndicatorHeight; + retswitch = 1; + break; +// case QStyle::PM_MenuPanelWidth: +// retval = 0; +// retswitch = 2; +// break; + case QStyle::PM_MenuHMargin: + retval = 0; + retswitch = 2; + break; + case QStyle::PM_MenuVMargin: + retval = 0; + retswitch = 2; + break; +// case QStyle::PM_MenuScrollerHeight: +// tqt3pixelmetric = TQStyle::PM_MenuScrollerHeight; +// retswitch = 1; +// break; +// case QStyle::PM_MenuTearoffHeight: +// tqt3pixelmetric = TQStyle::PM_MenuTearoffHeight; +// retswitch = 1; +// break; +// case QStyle::PM_MenuDesktopFrameWidth: +// tqt3pixelmetric = TQStyle::PM_MenuDesktopFrameWidth; +// retswitch = 1; +// break; + case QStyle::PM_CheckListButtonSize: + tqt3pixelmetric = TQStyle::PM_CheckListButtonSize; + retswitch = 1; + break; + case QStyle::PM_CheckListControllerSize: + tqt3pixelmetric = TQStyle::PM_CheckListControllerSize; + retswitch = 1; + break; + case QStyle::PM_HeaderMarkSize: + tqt3pixelmetric = TQStyle::PM_HeaderMarkSize; + retswitch = 1; + break; + case QStyle::PM_HeaderGripMargin: + tqt3pixelmetric = TQStyle::PM_HeaderGripMargin; + retswitch = 1; + break; + case QStyle::PM_HeaderMargin: + tqt3pixelmetric = TQStyle::PM_HeaderMargin; + retswitch = 1; + break; +// case QStyle::PM_SpinBoxSliderHeight: +// tqt3pixelmetric = TQStyle::PM_SpinBoxSliderHeight; +// retswitch = 1; +// break; +// case QStyle::PM_ToolBarIconSize: +// tqt3pixelmetric = TQStyle::PM_ToolBarIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_SmallIconSize: +// tqt3pixelmetric = TQStyle::PM_SmallIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_LargeIconSize: +// tqt3pixelmetric = TQStyle::PM_LargeIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_FocusFrameHMargin: +// tqt3pixelmetric = TQStyle::PM_FocusFrameHMargin; +// retswitch = 1; +// break; +// case QStyle::PM_FocusFrameVMargin: +// tqt3pixelmetric = TQStyle::PM_FocusFrameVMargin; +// retswitch = 1; +// break; +// case QStyle::PM_IconViewIconSize: +// tqt3pixelmetric = TQStyle::PM_IconViewIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_ListViewIconSize: +// tqt3pixelmetric = TQStyle::PM_ListViewIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_ToolTipLabelFrameWidth: +// tqt3pixelmetric = TQStyle::PM_ToolTipLabelFrameWidth; +// retswitch = 1; +// break; +// case QStyle::PM_CheckBoxLabelSpacing: +// tqt3pixelmetric = TQStyle::PM_CheckBoxLabelSpacing; +// retswitch = 1; +// break; +// case QStyle::PM_RadioButtonLabelSpacing: +// tqt3pixelmetric = TQStyle::PM_RadioButtonLabelSpacing; +// retswitch = 1; +// break; +// case QStyle::PM_TabBarIconSize: +// tqt3pixelmetric = TQStyle::PM_TabBarIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_SizeGripSize: +// tqt3pixelmetric = TQStyle::PM_SizeGripSize; +// retswitch = 1; +// break; +// case QStyle::PM_MessageBoxIconSize: +// tqt3pixelmetric = TQStyle::PM_MessageBoxIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_ButtonIconSize: +// tqt3pixelmetric = TQStyle::PM_ButtonIconSize; +// retswitch = 1; +// break; +// case QStyle::PM_TextCursorWidth: +// tqt3pixelmetric = TQStyle::PM_TextCursorWidth; +// retswitch = 1; +// break; +// case QStyle::PM_TabBar_ScrollButtonOverlap: +// tqt3pixelmetric = TQStyle::PM_TabBar_ScrollButtonOverlap; +// retswitch = 1; +// break; +// case QStyle::PM_TabCloseIndicatorWidth: +// tqt3pixelmetric = TQStyle::PM_TabCloseIndicatorWidth; +// retswitch = 1; +// break; +// case QStyle::PM_TabCloseIndicatorHeight: +// tqt3pixelmetric = TQStyle::PM_TabCloseIndicatorHeight; +// retswitch = 1; +// break; + default: +#ifdef DEBUG_WARNINGS + printf("No metrics for Qt4 element %d\n\r", metric); fflush(stdout); +#endif + retval = 0; + } + + if (retswitch == 1) { + retval = tqApp->style().pixelMetric(tqt3pixelmetric, interfaceWidget); + } + else { +// if (retswitch == 2) { +// // retval was already set +// } +// else { + // Tell Qt4 to get the information + retval = QCommonStyle::pixelMetric(metric, opt, w); +// } + } + + return retval; +} + +TQWidget* SimpleStyle::initializeInterfaceWidget(TQt3WidgetType wt, const QWidget* w) const +{ + int i; + TQWidget* interfaceWidget = 0; + + // Qt4 interface widget pointers + const QTabBar* qt4tabbar_widget = 0; + const QRadioButton* qt4radiobutton_widget = 0; + const QMenu* qt4menu_widget = 0; + const QProgressBar* qt4progressbar_widget = 0; + const QComboBox* qt4combobox_widget = 0; + + TQTabBar::Shape tqt3tbshape = TQTabBar::RoundedAbove; + + switch (wt) { + case TQT3WT_TQProgressBar: + interfaceWidget = m_tqt3progressbar_widget; + // Copy over all widget attributes + qt4progressbar_widget = static_cast(w); + m_tqt3progressbar_widget->setGeometry(0, 0, qt4progressbar_widget->width(), qt4progressbar_widget->height()); + m_tqt3progressbar_widget->setProgress(qt4progressbar_widget->value()-qt4progressbar_widget->minimum(),qt4progressbar_widget->maximum()-qt4progressbar_widget->minimum()); + if (qt4progressbar_widget->orientation() != Qt::Horizontal) { + // Qt3 cannot draw vertical progress bars +#ifdef DEBUG_WARNINGS + printf("No rules to draw vertical Qt4 progress bar\n\r"); fflush(stdout); + interfaceWidget = 0; +#endif + } + break; + case TQT3WT_TQTabBar: + interfaceWidget = m_tqt3tabbar_widget; + // Copy over all widget attributes + qt4tabbar_widget = static_cast(w); + m_tqt3tabbar_widget->setGeometry(0, 0, qt4tabbar_widget->width(), qt4tabbar_widget->height()); + // Clear out tabbar + for (i=0;icount();i++) { + m_tqt3tabbar_widget->removeTab(m_tqt3tabbar_widget->tabAt(i)); + } + // Copy over all tabs + for (i=0;icount();i++) { + if (qt4tabbar_widget->tabIcon(i).isNull()) { + TQTab* newTab = new TQTab(convertQt4ToTQt3String(qt4tabbar_widget->tabText(i))); + m_tqt3tabbar_widget->insertTab(newTab, i); + newTab->setIdentifier(i); + } + else { + TQTab* newTab = new TQTab(convertQt4ToTQt3IconSet(qt4tabbar_widget->tabIcon(i)), convertQt4ToTQt3String(qt4tabbar_widget->tabText(i))); + m_tqt3tabbar_widget->insertTab(newTab, i); + newTab->setIdentifier(i); + } + } + m_tqt3tabbar_widget->setCurrentTab(qt4tabbar_widget->currentIndex()); + switch (qt4tabbar_widget->shape()) { + case QTabBar::RoundedNorth: + tqt3tbshape = TQTabBar::RoundedAbove; + break; + case QTabBar::RoundedSouth: + tqt3tbshape = TQTabBar::RoundedBelow; + break; + case QTabBar::TriangularNorth: + tqt3tbshape = TQTabBar::TriangularAbove; + break; + case QTabBar::TriangularSouth: + tqt3tbshape = TQTabBar::TriangularBelow; + break; + default: + // Qt3 cannot draw other tab shapes +#ifdef DEBUG_WARNINGS + printf("No rules to draw Qt4 tab shape %d\n\r", qt4tabbar_widget->shape()); fflush(stdout); + interfaceWidget = 0; +#endif + } + m_tqt3tabbar_widget->setShape(tqt3tbshape); + break; + case TQT3WT_TQRadioButton: + interfaceWidget = m_tqt3radiobutton_widget; + // Copy over all widget attributes + qt4radiobutton_widget = static_cast(w); + m_tqt3radiobutton_widget->setGeometry(0, 0, qt4radiobutton_widget->width(), qt4radiobutton_widget->height()); + m_tqt3radiobutton_widget->setText(convertQt4ToTQt3String(qt4radiobutton_widget->text())); + m_tqt3radiobutton_widget->setDown(qt4radiobutton_widget->isDown()); + break; + case TQT3WT_TQComboBox: + interfaceWidget = m_tqt3combobox_widget; + // Copy over all widget attributes + qt4combobox_widget = static_cast(w); + m_tqt3combobox_widget->setGeometry(0, 0, qt4combobox_widget->width(), qt4combobox_widget->height()); + // Clear out all combobox items + m_tqt3combobox_widget->clear(); + + for (i=0;icount();i++) { + if (qt4combobox_widget->itemIcon(i).isNull()) { + 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->setEditable(qt4combobox_widget->isEditable()); + break; + case TQT3WT_TQPopupMenu: + interfaceWidget = m_tqt3popupmenu_widget; + // Copy over all widget attributes + qt4menu_widget = static_cast(w); + m_tqt3popupmenu_widget->setGeometry(0, 0, qt4menu_widget->width(), qt4menu_widget->height()); + // Clear out menu + m_tqt3popupmenu_widget->clear(); + m_tqt3popupmenu_widget->setCheckable(false); + // Copy over all menu items + QList qt4menuactions = qt4menu_widget->actions(); + QAction* currentAction = 0; + for (i=0; iisSeparator()) { + m_tqt3popupmenu_widget->insertSeparator(i); + } + else { + if (currentAction->icon().isNull()) { + m_tqt3popupmenu_widget->insertItem(convertQt4ToTQt3String(currentAction->text()), i, i); + } + else { + m_tqt3popupmenu_widget->insertItem(convertQt4ToTQt3IconSet(currentAction->icon()), convertQt4ToTQt3String(currentAction->text()), i, i); + } + // FIXME + // Handle pixmaps, etc. + } + m_tqt3popupmenu_widget->setItemEnabled(i, currentAction->isEnabled()); + m_tqt3popupmenu_widget->setItemChecked(i, currentAction->isChecked()); + m_tqt3popupmenu_widget->setItemVisible(i, currentAction->isVisible()); + if (currentAction->isCheckable()) { + m_tqt3popupmenu_widget->setCheckable(true); + } + } + } + break; + } + + return interfaceWidget; +} + +QRect SimpleStyle::subElementRect(SubElement element, const QStyleOption *opt, const QWidget *w) const +{ + TQStyle::SFlags sflags = 0; + + bool can_override = true; + TQStyle::SubRect tqtSR; + + TQWidget* interfaceWidget = 0; + QRect retRect; + + switch (element) { + case SE_ComboBoxFocusRect: + tqtSR = TQStyle::SR_ComboBoxFocusRect; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQComboBox, w); + if (interfaceWidget == 0) { + can_override = false; + } + break; + default: +#ifdef DEBUG_WARNINGS + printf("No rules to obtain Qt4 subelement rect %d\n\r", element); fflush(stdout); +#endif + can_override = false; + } + + if (can_override) { + // Instruct TQt3 to obtain the subelement rect information + retRect = convertTQt3ToQt4Rect(tqApp->style().subRect(tqtSR, interfaceWidget)); + +#ifdef DEBUG_WARNINGS +#ifdef DEBUG_SPEW + printf("Used Qt3 subelement rect %d to handle Qt4 subelement rect %d\n\r", tqtSR, control); fflush(stdout); +#endif +#endif + } + else { + // Tell Qt4 to obtain the subelement rect information + retRect = QCommonStyle::subElementRect(element, opt, w); + } + + return retRect; +} + +void SimpleStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w) const +{ + TQStyle::SFlags sflags = 0; + + bool can_override = true; + TQStyle::ComplexControl tqtCC; + TQStyle::SCFlags subControl = TQStyle::SC_All; + TQStyle::SCFlags subControlActive = TQStyle::SC_None; + + TQWidget* interfaceWidget = 0; + TQStyleOption tqt3opt(TQStyleOption::Default); + + // Determine the correct color group + sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_NONE); + TQPalette tqt3palette = convertQt4ToTQt3Palette(opt->palette); + TQColorGroup tqt3colorgroup; + if (sflags & TQStyle::Style_Enabled) { + if (sflags & TQStyle::Style_Active) { + tqt3colorgroup = tqt3palette.active(); + } + else { + tqt3colorgroup = tqt3palette.inactive(); + } + } + else { + tqt3colorgroup = tqt3palette.disabled(); + } + + switch (control) { + case CC_ComboBox: + tqtCC = TQStyle::CC_ComboBox; + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQComboBox, w); + if (interfaceWidget == 0) { + can_override = false; + } + break; + default: +#ifdef DEBUG_WARNINGS + printf("No rules to draw Qt4 complex control %d\n\r", control); fflush(stdout); +#endif + can_override = false; + } + + if (can_override) { + // Construct a Qt3 paint device on the Qt4 painter + TDEQt4PaintDevice qt4pd(p); + + TQPainter tqtPainter(&qt4pd); + + // Instruct TQt3 to draw the complex control + tqApp->style().drawComplexControl(tqtCC, &tqtPainter, interfaceWidget, TQRect(opt->rect.x(), opt->rect.y(), opt->rect.width(), opt->rect.height()), tqt3colorgroup, sflags, subControl, subControlActive, tqt3opt); + + tqtPainter.end(); + +#ifdef DEBUG_WARNINGS +#ifdef DEBUG_SPEW + printf("Used Qt3 complex control %d to draw Qt4 complex control %d\n\r", tqtCE, control); fflush(stdout); +#endif +#endif + } + else { + // Tell Qt4 to draw it + QCommonStyle::drawComplexControl(control, opt, p, w); + } +} + +void SimpleStyle::drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const +{ + int i; + TQStyle::SFlags sflags = 0; + + bool can_override = true; + TQStyle::ControlElement tqtCE; + + bool draw_second_element = false; + TQStyle::ControlElement tqtCE_element2; + + bool draw_third_element = false; + TQStyle::ControlElement tqtCE_element3; + + TQWidget* interfaceWidget = 0; + TQStyleOption tqt3opt(TQStyleOption::Default); + TQStyleOption tqt3opt_element2(TQStyleOption::Default); + TQStyleOption tqt3opt_element3(TQStyleOption::Default); + + TQTab* drawingTab = 0; + int estimated_tab_index; + + TQMenuItem* drawingItem = 0; + QAction* drawingAction = 0; + QList qt4menuactions; + int tqt3tabwidth = 0; + int tqt3iconwidth = 0; + + TQRect tqt3elementrect(opt->rect.x(), opt->rect.y(), opt->rect.width(), opt->rect.height()); + TQRect tqt3element2rect = tqt3elementrect; + TQRect tqt3element3rect = tqt3elementrect; + + // Determine the correct color group + sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_NONE); + TQPalette tqt3palette = convertQt4ToTQt3Palette(opt->palette); + TQColorGroup tqt3colorgroup; + if (sflags & TQStyle::Style_Enabled) { + if (sflags & TQStyle::Style_Active) { + tqt3colorgroup = tqt3palette.active(); + } + else { + tqt3colorgroup = tqt3palette.inactive(); + } + } + else { + tqt3colorgroup = tqt3palette.disabled(); + } + + switch (element) { + case QStyle::CE_ProgressBar: + // Unlike Qt3, QStyle::CE_ProgressBar draws the bar, the groove, and the label + tqtCE = TQStyle::CE_ProgressBarContents; + draw_second_element = true; + tqtCE_element2 = TQStyle::CE_ProgressBarGroove; + draw_third_element = true; + tqtCE_element3 = TQStyle::CE_ProgressBarLabel; + sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQProgressBar); + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQProgressBar, w); + if (interfaceWidget == 0) { + can_override = false; + } + break; + case QStyle::CE_ProgressBarContents: + tqtCE = TQStyle::CE_ProgressBarContents; + sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQProgressBar); + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQProgressBar, w); + if (interfaceWidget == 0) { + can_override = false; + } + break; + case QStyle::CE_TabBarTab: + // Unlike Qt3, QStyle::CE_TabBarTab draws both the tab and the label + tqtCE = TQStyle::CE_TabBarTab; + draw_second_element = true; + tqtCE_element2 = TQStyle::CE_TabBarLabel; + sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQTabBar); + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQTabBar, w); + if (interfaceWidget == 0) { + can_override = false; + } + else { + // Convert the QStyleOption to the proper TQStyleOption + // In other words, figure out which TQt3 tab is currently being drawn + // Qt4 makes this really, really hard... + // I have to guess based on the Qt4 position of the tab in the tab bar, which may or may not work 100% in all cases + drawingTab = 0; + estimated_tab_index = static_cast(w)->tabAt(QPoint(opt->rect.x(), opt->rect.y())); + drawingTab = m_tqt3tabbar_widget->tabAt(estimated_tab_index); + + if (drawingTab) { + tqt3opt = TQStyleOption(drawingTab); + tqt3opt_element2 = TQStyleOption(drawingTab); + } + + // HACK + // Qt4 is BUSTED YET AGAIN + // Grrrrr.... + // The PM_TabBarTabOverlap enum is present, BUT IS NOT IMPLEMENTED, in Qt4 (!??!?) + // Many TDE styles use overlapping tabs, and expect to draw outside their horizontal boundaries by PM_TabBarTabOverlap pixels + // At the very least we need to expand the drawing rect by that amount, even if the drawing gets clipped, otherwise + // those styles will show badly broken tabs with missing chunks and added lines. + tqt3tabwidth = tqApp->style().pixelMetric(TQStyle::PM_TabBarTabOverlap, interfaceWidget); + if (tqt3tabwidth > 0) { + tqt3elementrect = TQRect(tqt3elementrect.x()-tqt3tabwidth, tqt3elementrect.y(), tqt3elementrect.width()+(tqt3tabwidth*1), tqt3elementrect.height()); + } + } + break; +#if 0 + case CE_RadioButton: + // Unlike Qt3, QStyle::CE_RadioButton draws the button, the label, and 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; + } + break; +#endif + case CE_MenuItem: + tqtCE = TQStyle::CE_PopupMenuItem; + sflags = convertQt4ToTQt3SFlags(opt->state, TQT3WT_TQPopupMenu); + interfaceWidget = initializeInterfaceWidget(TQT3WT_TQPopupMenu, w); + if (interfaceWidget == 0) { + can_override = false; + } + else { + // Convert the QStyleOption to the proper TQStyleOption + // In other words, figure out which TQt3 menu item is currently being drawn + // Qt4 makes this really, really hard... + // I have to guess based on the Qt4 position of the item in the menu, which may or may not work 100% in all cases + drawingItem = 0; + drawingAction = static_cast(w)->actionAt(QPoint(opt->rect.x(), opt->rect.y())); + qt4menuactions = static_cast(w)->actions(); + for (i=0; ifindItem(m_tqt3popupmenu_widget->idAt(i)); + } + } + + if (drawingItem) { + tqt3tabwidth = static_cast(opt)->tabWidth; + tqt3iconwidth = static_cast(opt)->maxIconWidth; + tqt3opt = TQStyleOption(drawingItem, tqt3iconwidth, tqt3tabwidth); + } + } + break; + case QStyle::CE_TabBarTabShape: + // Ignore request as Qt3 has no equivalent + can_override = false; + break; + default: +#ifdef DEBUG_WARNINGS + printf("No rules to draw Qt4 control %d\n\r", element); fflush(stdout); +#endif + can_override = false; + } + + if (can_override) { + // Construct a Qt3 paint device on the Qt4 painter + TDEQt4PaintDevice qt4pd(p); + + TQPainter tqtPainter(&qt4pd); + + // Instruct TQt3 to draw the control + // FIXME + // Implement sflags and QStyleOption + tqApp->style().drawControl(tqtCE, &tqtPainter, interfaceWidget, tqt3elementrect, tqt3colorgroup, sflags, tqt3opt); + if (draw_second_element == true) { + tqApp->style().drawControl(tqtCE_element2, &tqtPainter, interfaceWidget, tqt3element2rect, tqt3colorgroup, sflags, tqt3opt_element2); + } + if (draw_third_element == true) { + tqApp->style().drawControl(tqtCE_element3, &tqtPainter, interfaceWidget, tqt3element3rect, tqt3colorgroup, sflags, tqt3opt_element3); + } + + tqtPainter.end(); + +#ifdef DEBUG_WARNINGS +#ifdef DEBUG_SPEW + printf("Used Qt3 control %d to draw Qt4 control %d\n\r", tqtCE, element); fflush(stdout); +#endif +#endif + } + else { + // Tell Qt4 to draw it + QCommonStyle::drawControl(element, opt, p, w); + } +} + +#define NO_QT3_EQUIVALENT can_override = false; + +void SimpleStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const +{ + // Construct a Qt3 paint device translator on the Qt4 painter + TDEQt4PaintDevice qt4pd(p); + + // Open a painter on the paint device translator + TQPainter tqtPainter(&qt4pd); + + bool can_override = true; + TQStyle::PrimitiveElement tqtPE; + TQStyleOption tqt3opt(TQStyleOption::Default); + + // NOTE: Qt3 seems to combine PE_FrameMenu and PE_PanelMenu into PE_PanelPopup + + switch (pe) { + case QStyle::PE_Frame: + tqtPE = TQStyle::PE_Panel; + tqt3opt = TQStyleOption(static_cast(opt)->lineWidth, static_cast(opt)->midLineWidth); + break; + case QStyle::PE_FrameMenu: + tqtPE = TQStyle::PE_PanelPopup; + tqt3opt = TQStyleOption(static_cast(opt)->lineWidth, static_cast(opt)->midLineWidth); + break; + case QStyle::PE_PanelButtonBevel: + tqtPE = TQStyle::PE_ButtonBevel; + break; + case QStyle::PE_FrameGroupBox: + tqtPE = TQStyle::PE_GroupBoxFrame; + tqt3opt = TQStyleOption(static_cast(opt)->lineWidth, static_cast(opt)->midLineWidth); + break; + case QStyle::PE_FrameFocusRect: + tqtPE = TQStyle::PE_FocusRect; + break; + case QStyle::PE_FrameButtonTool: + tqtPE = TQStyle::PE_ButtonTool; + break; + case QStyle::PE_FrameTabBarBase: + NO_QT3_EQUIVALENT + break; + case QStyle::PE_FrameTabWidget: + tqtPE = TQStyle::PE_PanelTabWidget; + break; + case QStyle::PE_PanelButtonCommand: + tqtPE = TQStyle::PE_ButtonCommand; + break; + case QStyle::PE_IndicatorProgressChunk: + tqtPE = TQStyle::PE_ProgressBarChunk; + break; + case QStyle::PE_IndicatorArrowDown: + tqtPE = TQStyle::PE_ArrowDown; + break; + case QStyle::PE_IndicatorArrowLeft: + tqtPE = TQStyle::PE_ArrowLeft; + break; + case QStyle::PE_IndicatorArrowRight: + tqtPE = TQStyle::PE_ArrowRight; + break; + case QStyle::PE_IndicatorArrowUp: + tqtPE = TQStyle::PE_ArrowUp; + break; + case QStyle::PE_IndicatorCheckBox: + tqtPE = TQStyle::PE_Indicator; + break; + case QStyle::PE_IndicatorRadioButton: + tqtPE = TQStyle::PE_ExclusiveIndicator; + break; + case QStyle::PE_PanelMenu: + tqtPE = TQStyle::PE_PanelPopup; + break; + case QStyle::PE_PanelButtonTool: + tqtPE = TQStyle::PE_ButtonTool; + break; + case QStyle::PE_IndicatorTabTear: + NO_QT3_EQUIVALENT + break; + default: +#ifdef DEBUG_WARNINGS + printf("No rules to draw Qt4 element %d\n\r", pe); fflush(stdout); +#endif + 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; + if (sflags & TQStyle::Style_Enabled) { + if (sflags & TQStyle::Style_Active) { + tqt3colorgroup = tqt3palette.active(); + } + else { + tqt3colorgroup = tqt3palette.inactive(); + } + } + else { + tqt3colorgroup = tqt3palette.disabled(); + } + + + if (can_override) { + // Construct a Qt3 paint device on the Qt4 painter + TDEQt4PaintDevice qt4pd(p); + + TQPainter tqtPainter(&qt4pd); + + // Instruct TQt3 to draw the primitive + tqApp->style().drawPrimitive(tqtPE, &tqtPainter, TQRect(opt->rect.x(), opt->rect.y(), opt->rect.width(), opt->rect.height()), tqt3colorgroup, sflags, tqt3opt); + tqtPainter.end(); + +#ifdef DEBUG_WARNINGS +#ifdef DEBUG_SPEW + printf("Used Qt3 element %d to draw Qt4 element %d\n\r", tqtPE, pe); fflush(stdout); +#endif +#endif + } + else { + // Tell Qt4 to draw it + QCommonStyle::drawPrimitive(pe, opt, p, w); + } +} diff --git a/plugin/simplestyle.h b/plugin/simplestyle.h new file mode 100644 index 0000000..0b067b2 --- /dev/null +++ b/plugin/simplestyle.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Timothy Pearson. All rights reserved. +** +** This file is part of the TDE Qt4 style interface +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef SIMPLESTYLE_H +#define SIMPLESTYLE_H + +#include + +QT_BEGIN_NAMESPACE +class QPalette; +QT_END_NAMESPACE + +class TQWidget; +class TQTabBar; +class TQRadioButton; +class TQProgressBar; +class TQPopupMenu; +class TQComboBox; + +enum TQt3WidgetType { + TQT3WT_NONE, + TQT3WT_TQProgressBar, + TQT3WT_TQTabBar, + TQT3WT_TQRadioButton, + TQT3WT_TQPopupMenu, + TQT3WT_TQComboBox +}; + +class SimpleStyle : public QWindowsStyle +{ + Q_OBJECT + +public: + SimpleStyle(); + ~SimpleStyle(); + + void polish(QPalette &palette); + void polish(QWidget *widget); + void unpolish(QWidget *widget); + bool eventFilter(QObject *obj, QEvent *ev); + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w = 0) const; + void drawControl(ControlElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const; + void drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget = 0) const; + 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; + +private: + TQWidget* initializeInterfaceWidget(TQt3WidgetType wt, const QWidget * widget) const; + + TQWidget* m_tqt3parent_widget; + TQTabBar* m_tqt3tabbar_widget; + TQRadioButton* m_tqt3radiobutton_widget; + TQProgressBar* m_tqt3progressbar_widget; + TQPopupMenu* m_tqt3popupmenu_widget; + TQComboBox* m_tqt3combobox_widget; +}; + +#endif diff --git a/plugin/simplestyleplugin.cpp b/plugin/simplestyleplugin.cpp new file mode 100644 index 0000000..a474217 --- /dev/null +++ b/plugin/simplestyleplugin.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "simplestyleplugin.h" +#include "simplestyle.h" + +//! [0] +QStringList SimpleStylePlugin::keys() const +{ + return QStringList() << "SimpleStyle"; +} +//! [0] + +//! [1] +QStyle *SimpleStylePlugin::create(const QString &key) +{ + if (key.toLower() == "simplestyle") + return new SimpleStyle; + return 0; +} +//! [1] + +QT_BEGIN_NAMESPACE +Q_EXPORT_PLUGIN2(simplestyleplugin, SimpleStylePlugin) +QT_END_NAMESPACE diff --git a/plugin/simplestyleplugin.h b/plugin/simplestyleplugin.h new file mode 100644 index 0000000..e7616dd --- /dev/null +++ b/plugin/simplestyleplugin.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SIMPLESTYLEPLUGIN_H +#define SIMPLESTYLEPLUGIN_H + +#include + +QT_BEGIN_NAMESPACE +class QStringList; +class QStyle; +QT_END_NAMESPACE + +//! [0] +class SimpleStylePlugin : public QStylePlugin +{ + Q_OBJECT + +public: + SimpleStylePlugin() {}; + + QStringList keys() const; + QStyle *create(const QString &key); +}; +//! [0] + +#endif diff --git a/plugin/tdeqt4painter.cpp b/plugin/tdeqt4painter.cpp new file mode 100644 index 0000000..6c8d4c0 --- /dev/null +++ b/plugin/tdeqt4painter.cpp @@ -0,0 +1,772 @@ +/**************************************************************************** +** +** Implementation of TDEQt4PaintDevice class +** +** Copyright (C) 2012 Timothy Pearson. All rights reserved. +** +** This file is part of the TDE Qt4 style interface +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#include "tdeqt4painter.h" + +#define TQT_NO_COMPAT_NAMES +#include "tqpainter.h" +#include "tqpixmap.h" +#include "tqbitmap.h" +#include "tqimage.h" +#include "tqfile.h" +#include "tqpaintdevicemetrics.h" +#undef Qt + +/*! + \class TDEQt4PaintDevice ntqpicture.h + \brief The TDEQt4PaintDevice class is a paint device that records and + replays TQPainter commands. + + \ingroup graphics + \ingroup images + \ingroup shared + + A picture serializes painter commands to an IO device in a + platform-independent format. For example, a picture created under + Windows can be read on a Sun SPARC. + + Pictures are called meta-files on some platforms. + + TQt pictures use a proprietary binary format. Unlike native picture + (meta-file) formats on many window systems, TQt pictures have no + limitations regarding their contents. Everything that can be + painted can also be stored in a picture, e.g. fonts, pixmaps, + regions, transformed graphics, etc. + + TDEQt4PaintDevice is an \link shclass.html implicitly shared\endlink class. + + Example of how to record a picture: + \code + TDEQt4PaintDevice pic; + TQPainter p; + p.begin( &pic ); // paint in picture + p.drawEllipse( 10,20, 80,70 ); // draw an ellipse + p.end(); // painting done + pic.save( "drawing.pic" ); // save picture + \endcode + + Example of how to replay a picture: + \code + TDEQt4PaintDevice pic; + pic.load( "drawing.pic" ); // load picture + TQPainter p; + p.begin( &myWidget ); // paint in myWidget + p.drawPicture( pic ); // draw the picture + p.end(); // painting done + \endcode + + Pictures can also be drawn using play(). Some basic data about a + picture is available, for example, size(), isNull() and + boundingRect(). + +*/ + + +/*! + Constructs an empty picture. + + The \a formatVersion parameter may be used to \e create a TDEQt4PaintDevice + that can be read by applications that are compiled with earlier + versions of TQt. + \list + \i \a formatVersion == 1 is binary compatible with TQt 1.x and later. + \i \a formatVersion == 2 is binary compatible with TQt 2.0.x and later. + \i \a formatVersion == 3 is binary compatible with TQt 2.1.x and later. + \i \a formatVersion == 4 is binary compatible with TQt 3.0.x and later. + \i \a formatVersion == 5 is binary compatible with TQt 3.1. + \endlist + + Note that the default formatVersion is -1 which signifies the + current release, i.e. for TQt 3.1 a formatVersion of 5 is the same + as the default formatVersion of -1. + + Reading pictures generated by earlier versions of TQt is supported + and needs no special coding; the format is automatically detected. +*/ + +TDEQt4PaintDevice::TDEQt4PaintDevice( QPainter *qt4painter ) + : TQPaintDevice( TQInternal::Picture | TQInternal::ExternalDevice ) +{ + m_qt4painter = qt4painter; +} + +/*! + Destroys the picture. +*/ +TDEQt4PaintDevice::~TDEQt4PaintDevice() +{ +} + +/*! + \internal + Implementation of the function forwarded above to the internal data struct. +*/ + +bool TDEQt4PaintDevice::cmd( int c, TQPainter *pt, TQPDevCmdParam *p ) +{ + Q_UNUSED(pt); + + unsigned int i; + int x; + int y; + QPen qt4pen; + QRect qt4rect; + QBrush qt4brush; + QPoint qt4point1; + QPoint qt4point2; + QPolygon qt4polygon; + QFont qt4font; + QPixmap qt4pixmap; + QString qt4string; + QMatrix qt4matrix; + QRegion qt4region; + Qt::BGMode qt4bkmode = Qt::TransparentMode; + QPainter::CompositionMode qt4compositionmode = QPainter::CompositionMode_SourceOver; + int qt4formattedtextflags = 0; + + if (p) { + if (c == PdcSetClipRegion) { + // FIXME + // Ellipses are not being handle correctly AT ALL + // Look at the Lipstik progress bar for an example of this... +#if 0 + // IMPRECISE + const TQMemArray rects = p[0].rgn->rects(); + for ( uint i = 0; i < rects.count(); i++ ) { + TQRect r = rects[(int)i]; + qt4region = qt4region.united(QRegion(QRect(r.x(), r.y(), r.width(), r.height()))); + } +#else + // SLOW + TQRect tqt3br = p[0].rgn->boundingRect(); + TQBitmap regionMask(tqt3br.x()+tqt3br.width(), tqt3br.y()+tqt3br.height()); + regionMask.fill(TQt::color0); + TQPainter tqt3brpainter(®ionMask); + tqt3brpainter.setClipRegion(*p[0].rgn); + tqt3brpainter.fillRect(0,0,regionMask.width(),regionMask.height(),TQt::color1); + tqt3brpainter.end(); + QBitmap qt4RegionMask = QPixmap::fromX11Pixmap(regionMask.handle(), QPixmap::ImplicitlyShared); + qt4region = QRegion(qt4RegionMask); +#endif + TQPainter::CoordinateMode tqt3coordmode = (TQPainter::CoordinateMode)p[1].ival; + if ( tqt3coordmode == TQPainter::CoordDevice ) { + qt4region = qt4region; + } + else { + qt4region = m_qt4painter->transform().map(qt4region); + } + } + if (c == PdcSetWMatrix) { + const TQWMatrix* tqt3matrix = p[0].matrix; + qt4matrix = QMatrix(tqt3matrix->m11(), tqt3matrix->m12(), tqt3matrix->m21(), tqt3matrix->m22(), tqt3matrix->dx(), tqt3matrix->dy()); + } + if (c == PdcSetROP) { + TQt::RasterOp rop = (TQt::RasterOp)p[0].ival; + switch (rop) { + case TQPainter::CopyROP: + qt4compositionmode=QPainter::CompositionMode_SourceOver; + break; + case TQPainter::OrROP: + qt4compositionmode=QPainter::RasterOp_SourceOrDestination; + break; + case TQPainter::XorROP: + qt4compositionmode=QPainter::RasterOp_SourceXorDestination; + break; + case TQPainter::NotAndROP: + qt4compositionmode=QPainter::RasterOp_NotSourceAndDestination; + break; +// case TQPainter::EraseROP: +// qt4compositionmode=QPainter::RasterOp_NotSourceAndDestination; +// break; + case TQPainter::NotCopyROP: + qt4compositionmode=QPainter::RasterOp_NotSource; + break; + case TQPainter::NotOrROP: + tqWarning("TDEQt4PaintDevice::cmd: Unhandled raster operation [Was attempting to use raster operation %d\n\r", rop); + break; + case TQPainter::NotXorROP: + qt4compositionmode=QPainter::RasterOp_NotSourceXorDestination; + break; + case TQPainter::AndROP: + qt4compositionmode=QPainter::RasterOp_SourceAndDestination; + break; +// case TQPainter::NotEraseROP: +// qt4compositionmode=QPainter::RasterOp_SourceAndDestination; +// break; + case TQPainter::NotROP: + qt4compositionmode=QPainter::RasterOp_SourceAndNotDestination; // [WARNING] This may not be a correct substitute for NotROP! + break; + case TQPainter::ClearROP: + qt4compositionmode=QPainter::CompositionMode_Clear; + break; + case TQPainter::SetROP: + tqWarning("TDEQt4PaintDevice::cmd: Unhandled raster operation [Was attempting to use raster operation %d\n\r", rop); + break; + case TQPainter::NopROP: + qt4compositionmode=QPainter::CompositionMode_Destination; + break; + case TQPainter::AndNotROP: + qt4compositionmode=QPainter::RasterOp_SourceAndNotDestination; + break; + case TQPainter::OrNotROP: + tqWarning("TDEQt4PaintDevice::cmd: Unhandled raster operation [Was attempting to use raster operation %d\n\r", rop); + break; + case TQPainter::NandROP: + qt4compositionmode=QPainter::RasterOp_NotSourceOrNotDestination; + break; + case TQPainter::NorROP: + qt4compositionmode=QPainter::RasterOp_NotSourceAndNotDestination; + break; + default: + qt4compositionmode=QPainter::CompositionMode_SourceOver; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Unhandled raster operation %d", rop ); +#endif + } + } + if (( c== PdcDrawTextFormatted) || (c == PdcDrawText2Formatted)) { + qt4rect = QRect(p[0].rect->x(), p[0].rect->y(), p[0].rect->width(), p[0].rect->height()); + qt4formattedtextflags = 0; +// if (p[1].ival & TQt::AlignAuto) { +// qt4formattedtextflags = qt4formattedtextflags | Qt::AlignAuto; +// } + if ((p[1].ival & TQt::AlignLeft) == TQt::AlignLeft) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignLeft; + } + if ((p[1].ival & TQt::AlignRight) == TQt::AlignRight) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignRight; + } + if ((p[1].ival & TQt::AlignHCenter) == TQt::AlignHCenter) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignHCenter; + } + if ((p[1].ival & TQt::AlignJustify) == TQt::AlignJustify) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignJustify; + } + if ((p[1].ival & TQt::AlignTop) == TQt::AlignTop) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignTop; + } + if ((p[1].ival & TQt::AlignBottom) == TQt::AlignBottom) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignBottom; + } + if ((p[1].ival & TQt::AlignVCenter) == TQt::AlignVCenter) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignVCenter; + } + if ((p[1].ival & TQt::AlignCenter) == TQt::AlignCenter) { + qt4formattedtextflags = qt4formattedtextflags | Qt::AlignCenter; + } + if ((p[1].ival & TQt::SingleLine) == TQt::SingleLine) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextSingleLine; + } + if ((p[1].ival & TQt::DontClip) == TQt::DontClip) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextDontClip; + } + if ((p[1].ival & TQt::ExpandTabs) == TQt::ExpandTabs) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextExpandTabs; + } + if ((p[1].ival & TQt::ShowPrefix) == TQt::ShowPrefix) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextShowMnemonic; + } + if ((p[1].ival & TQt::WordBreak) == TQt::WordBreak) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextWordWrap; + } + if ((p[1].ival & TQt::BreakAnywhere) == TQt::BreakAnywhere) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextWrapAnywhere; + } + if ((p[1].ival & TQt::NoAccel) == TQt::NoAccel) { + qt4formattedtextflags = qt4formattedtextflags | Qt::TextHideMnemonic; + } + qt4string = QString::fromUtf8(p[2].str->utf8().data()); + } + if ((c == PdcDrawPoint) || (c == PdcMoveTo) || (c == PdcLineTo) || (c == PdcSetBrushOrigin)) { + qt4point1 = QPoint(p[0].point->x(), p[0].point->y()); + } + if (c == PdcDrawLine) { + qt4point1 = QPoint(p[0].point->x(), p[0].point->y()); + qt4point2 = QPoint(p[1].point->x(), p[1].point->y()); + } + if ((c == PdcDrawPolyline) || (c == PdcDrawPolygon) || (c == PdcDrawLineSegments) || (c == PdcDrawCubicBezier)) { + TQPointArray qt3parray = *p[0].ptarr; + qt4polygon.resize(qt3parray.count()); + for (i=0;ix(), p[0].rect->y(), p[0].rect->width(), p[0].rect->height()); + } + if (c == PdcSetBrush) { + TQt::BrushStyle tqt3brushstyle = p[0].brush->style(); + Qt::BrushStyle qt4brushstyle; + switch ( tqt3brushstyle ) { + case TQt::NoBrush: + qt4brushstyle = Qt::NoBrush; + break; + case TQt::SolidPattern: + qt4brushstyle = Qt::SolidPattern; + break; + case TQt::Dense1Pattern: + qt4brushstyle = Qt::Dense1Pattern; + break; + case TQt::Dense2Pattern: + qt4brushstyle = Qt::Dense2Pattern; + break; + case TQt::Dense3Pattern: + qt4brushstyle = Qt::Dense3Pattern; + break; + case TQt::Dense4Pattern: + qt4brushstyle = Qt::Dense4Pattern; + break; + case TQt::Dense5Pattern: + qt4brushstyle = Qt::Dense5Pattern; + break; + case TQt::Dense6Pattern: + qt4brushstyle = Qt::Dense6Pattern; + break; + case TQt::Dense7Pattern: + qt4brushstyle = Qt::Dense7Pattern; + break; + case TQt::HorPattern: + qt4brushstyle = Qt::HorPattern; + break; + case TQt::VerPattern: + qt4brushstyle = Qt::VerPattern; + break; + case TQt::CrossPattern: + qt4brushstyle = Qt::CrossPattern; + break; + case TQt::BDiagPattern: + qt4brushstyle = Qt::BDiagPattern; + break; + case TQt::FDiagPattern: + qt4brushstyle = Qt::FDiagPattern; + break; + case TQt::DiagCrossPattern: + qt4brushstyle = Qt::DiagCrossPattern; + break; + case TQt::CustomPattern: + qt4brushstyle = Qt::TexturePattern; + break; + default: + qt4brushstyle = Qt::NoBrush; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Invalid brush style %d", tqt3brushstyle ); +#endif + } + qt4brush.setStyle(qt4brushstyle); + TQColor qt3color = p[0].brush->color(); + qt4brush.setColor(QColor(qt3color.red(), qt3color.green(), qt3color.blue(), 255)); + if (qt4brushstyle == Qt::TexturePattern) { + TQPixmap tqtPM = *p[0].brush->pixmap(); + QPixmap qtPM = QPixmap::fromX11Pixmap(tqtPM.handle(), QPixmap::ImplicitlyShared); + qt4brush.setTexture(qtPM); + } + } + if (c == PdcSetPen) { + bool customPenStyle = false; + TQt::PenStyle tqt3penstyle = p[0].pen->style(); + Qt::PenStyle qt4penstyle; + QVector dashes; + qreal mark; + qreal space; + switch ( tqt3penstyle ) { + case TQt::NoPen: + qt4penstyle = Qt::NoPen; + break; + case TQt::SolidLine: + qt4penstyle = Qt::SolidLine; + break; + case TQt::DashLine: + qt4penstyle = Qt::DashLine; + break; + case TQt::DotLine: + qt4penstyle = Qt::DotLine; + break; + case TQt::DashDotLine: + qt4penstyle = Qt::DashDotLine; + break; + case TQt::DashDotDotLine: + qt4penstyle = Qt::DashDotDotLine; + break; + case TQt::FineDotLine: + customPenStyle = true; + mark = 1; + space = 1; + dashes << mark << space; + qt4pen.setDashPattern(dashes); + break; + case TQt::MPenStyle: + qt4penstyle = Qt::MPenStyle; + break; + default: + qt4penstyle = Qt::NoPen; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Invalid pen style %d", tqt3penstyle ); +#endif + } + if (customPenStyle == false) { + qt4pen.setStyle(qt4penstyle); + } + TQt::PenCapStyle tqt3pencapstyle = p[0].pen->capStyle(); + Qt::PenCapStyle qt4pencapstyle; + switch ( tqt3pencapstyle ) { + case TQt::FlatCap: + qt4pencapstyle = Qt::FlatCap; + break; + case TQt::SquareCap: + qt4pencapstyle = Qt::SquareCap; + break; + case TQt::RoundCap: + qt4pencapstyle = Qt::RoundCap; + break; + case TQt::MPenCapStyle: + qt4pencapstyle = Qt::MPenCapStyle; + default: + qt4pencapstyle = Qt::FlatCap; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Invalid pen cap style %d", tqt3pencapstyle ); +#endif + } + qt4pen.setCapStyle(qt4pencapstyle); + TQt::PenJoinStyle tqt3penjoinstyle = p[0].pen->joinStyle(); + Qt::PenJoinStyle qt4penjoinstyle; + switch ( tqt3penjoinstyle ) { + case TQt::MiterJoin: + qt4penjoinstyle = Qt::MiterJoin; + break; + case TQt::BevelJoin: + qt4penjoinstyle = Qt::BevelJoin; + break; + case TQt::RoundJoin: + qt4penjoinstyle = Qt::RoundJoin; + break; + case TQt::MPenJoinStyle: + qt4penjoinstyle = Qt::MPenJoinStyle; + default: + qt4penjoinstyle = Qt::MiterJoin; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Invalid pen join style %d", tqt3penjoinstyle ); +#endif + } + qt4pen.setJoinStyle(qt4penjoinstyle); + TQColor qt3color = p[0].pen->color(); + qt4pen.setColor(QColor(qt3color.red(), qt3color.green(), qt3color.blue(), 255)); + qt4pen.setWidth(p[0].pen->width()); + } + if (c == PdcSetBkMode) { + TQt::BGMode qt3bkmode = (TQt::BGMode)p[0].ival; + switch ( qt3bkmode ) { + case TQt::TransparentMode: + qt4bkmode = Qt::TransparentMode; + break; + case TQt::OpaqueMode: + qt4bkmode = Qt::OpaqueMode; + break; + default: + qt4bkmode = Qt::TransparentMode; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Invalid background mode %d", qt3bkmode ); +#endif + } + } + if (c == PdcSetFont) { + // FIXME + printf("[WARNING] QFont conversion is NOT COMPLETE\n\r"); fflush(stdout); + + TQFont qt3font = *p[0].font; + qt4font = QFont(QString::fromUtf8(qt3font.family().utf8().data()), qt3font.pointSize(), qt3font.weight(), qt3font.italic()); + } + if (c == PdcDrawPixmap) { + qt4rect = QRect(p[0].rect->x(), p[0].rect->y(), p[0].rect->width(), p[0].rect->height()); + TQPixmap qt3pixmap = *p[1].pixmap; + qt4pixmap = QPixmap::fromX11Pixmap(qt3pixmap.handle(), QPixmap::ImplicitlyShared); + } + if (c == PdcDrawText2) { + qt4point1 = QPoint(p[0].point->x(), p[0].point->y()); + qt4string = QString::fromUtf8(p[1].str->utf8().data()); + } + } + + int index; + int count; + int lineCount; + QPainterPath path; + + switch ( c ) { // exec cmd + case PdcNOP: + break; + case PdcDrawPoint: + m_qt4painter->drawPoint( qt4point1 ); + break; + case PdcMoveTo: + curPt = qt4point1; + break; + case PdcLineTo: + prevPt = curPt; + curPt = qt4point1; + m_qt4painter->drawLine( prevPt, curPt ); + break; + case PdcDrawLine: + m_qt4painter->drawLine( qt4point1, qt4point2 ); + break; + case PdcDrawRect: + m_qt4painter->drawRect( qt4rect ); + break; + case PdcDrawRoundRect: + m_qt4painter->drawRoundedRect( qt4rect, p[1].ival, p[2].ival ); + break; + case PdcDrawEllipse: + m_qt4painter->drawEllipse( qt4rect ); + break; + case PdcDrawArc: + m_qt4painter->drawArc( qt4rect, p[1].ival, p[2].ival ); + break; + case PdcDrawPie: + m_qt4painter->drawPie( qt4rect, p[1].ival, p[2].ival ); + break; + case PdcDrawChord: + m_qt4painter->drawChord( qt4rect, p[1].ival, p[2].ival ); + break; + case PdcDrawLineSegments: + index = 0; + count = -1; + lineCount = (count == -1) ? (qt4polygon.size() - index) / 2 : count; + m_qt4painter->drawLines(qt4polygon.constData() + index * 2, lineCount); + break; + case PdcDrawPolyline: + m_qt4painter->drawPolyline( qt4polygon ); + break; + case PdcDrawPolygon: + m_qt4painter->drawPolygon( qt4polygon, (p[1].ival == 0)?Qt::OddEvenFill:Qt::WindingFill ); + break; + case PdcDrawCubicBezier: + index = 0; + path.moveTo(qt4polygon.at(index)); + path.cubicTo(qt4polygon.at(index+1), qt4polygon.at(index+2), qt4polygon.at(index+3)); + m_qt4painter->strokePath(path, m_qt4painter->pen()); + break; + case PdcDrawText: + m_qt4painter->drawText( qt4point1, qt4string ); + break; + case PdcDrawTextFormatted: + m_qt4painter->drawText( qt4rect, qt4formattedtextflags, qt4string ); + break; + case PdcDrawText2: + m_qt4painter->drawText( qt4point1, qt4string ); + break; + case PdcDrawText2Formatted: + m_qt4painter->drawText( qt4rect, qt4formattedtextflags, qt4string ); + break; + case PdcDrawPixmap: + m_qt4painter->drawPixmap( qt4rect, qt4pixmap ); + break; +#if 0 + case PdcDrawImage: { + TQImage image; + if ( d->formatMajor < 4 ) { + s >> p >> image; + painter->drawImage( p, image ); + } else { + s >> r >> image; + painter->drawImage( r, image ); + } + } + break; +#endif + case PdcBegin: + if (m_qt4painter->isActive()) { + // KEEP THIS DEACTIVATED +// QPaintDevice* pd = m_qt4painter->device(); +// m_qt4painter->end(); +// m_qt4painter->begin(pd); + } +#if defined(QT_CHECK_RANGE) + else { + tqWarning( "TDEQt4PaintDevice::cmd: Painter has no paint device available" ); + } +#endif + break; + case PdcEnd: + // KEEP THIS DEACTIVATED +// m_qt4painter->end(); + break; + case PdcSave: + m_qt4painter->save(); + break; + case PdcRestore: + m_qt4painter->restore(); + break; + case PdcSetBkColor: + m_qt4painter->setBackground( QBrush(QColor(p[0].color->red(), p[0].color->green(), p[0].color->blue())) ); + break; + case PdcSetBkMode: + m_qt4painter->setBackgroundMode( qt4bkmode ); + break; + case PdcSetROP: + m_qt4painter->setCompositionMode(qt4compositionmode); + break; + case PdcSetBrushOrigin: + m_qt4painter->setBrushOrigin( qt4point1 ); + break; + case PdcSetFont: + m_qt4painter->setFont( qt4font ); + break; + case PdcSetPen: + m_qt4painter->setPen( qt4pen ); + break; + case PdcSetBrush: + m_qt4painter->setBrush( qt4brush ); + break; +#if 0 + case PdcSetTabStops: + s >> i_16; + painter->setTabStops( i_16 ); + break; + case PdcSetTabArray: + s >> i_16; + if ( i_16 == 0 ) { + painter->setTabArray( 0 ); + } else { + int *ta = new int[i_16]; + TQ_CHECK_PTR( ta ); + for ( int i=0; i> i1_16; + ta[i] = i1_16; + } + painter->setTabArray( ta ); + delete [] ta; + } + break; + case PdcSetVXform: + s >> i_8; +#ifndef QT_NO_TRANSFORMATIONS + painter->setViewXForm( i_8 ); +#endif + break; + case PdcSetWindow: + s >> r; +#ifndef QT_NO_TRANSFORMATIONS + painter->setWindow( r ); +#endif + break; + case PdcSetViewport: + s >> r; +#ifndef QT_NO_TRANSFORMATIONS + painter->setViewport( r ); +#endif + break; +#endif + case PdcSetWXform: + m_qt4painter->setWorldMatrixEnabled( p[0].ival ); + break; + case PdcSetWMatrix: + m_qt4painter->setWorldMatrix( qt4matrix, p[1].ival ); + break; +#if 0 +#ifndef QT_NO_TRANSFORMATIONS + case PdcSaveWMatrix: + painter->saveWorldMatrix(); + break; + case PdcRestoreWMatrix: + painter->restoreWorldMatrix(); + break; +#endif +#endif + case PdcSetClip: + m_qt4painter->setClipping( p[0].ival ); + break; + case PdcSetClipRegion: + m_qt4painter->setClipRegion( qt4region, Qt::ReplaceClip ); + break; + default: +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::cmd: Invalid command %d", c ); +#endif + } + + return TRUE; +} + + +/*! + Internal implementation of the virtual TQPaintDevice::metric() + function. + + Use the TQPaintDeviceMetrics class instead. + + A picture has the following hard-coded values: dpi=72, + numcolors=16777216 and depth=24. + + \a m is the metric to get. +*/ + +int TDEQt4PaintDevice::metric( int m ) const +{ + int val; + QPaintDevice* qt4pd = m_qt4painter->device(); + if (qt4pd) { + switch ( m ) { + // ### hard coded dpi and color depth values ! + case TQPaintDeviceMetrics::PdmWidth: + val = qt4pd->width(); + break; + case TQPaintDeviceMetrics::PdmHeight: + val = qt4pd->height(); + break; + case TQPaintDeviceMetrics::PdmWidthMM: + val = qt4pd->widthMM(); + break; + case TQPaintDeviceMetrics::PdmHeightMM: + val = qt4pd->heightMM(); + break; + case TQPaintDeviceMetrics::PdmDpiX: + val = qt4pd->logicalDpiX(); + break; + case TQPaintDeviceMetrics::PdmPhysicalDpiX: + val = qt4pd->physicalDpiX(); + break; + case TQPaintDeviceMetrics::PdmDpiY: + val = qt4pd->logicalDpiY(); + break; + case TQPaintDeviceMetrics::PdmPhysicalDpiY: + val = qt4pd->physicalDpiY(); + break; + case TQPaintDeviceMetrics::PdmNumColors: + val = qt4pd->colorCount(); + break; + case TQPaintDeviceMetrics::PdmDepth: + val = qt4pd->depth(); + break; + default: + val = 0; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::metric: Invalid metric command" ); +#endif + } + } + else { + val = 0; +#if defined(QT_CHECK_RANGE) + tqWarning( "TDEQt4PaintDevice::metric: No Qt4 paint device available" ); +#endif + } + return val; +} + diff --git a/plugin/tdeqt4painter.h b/plugin/tdeqt4painter.h new file mode 100644 index 0000000..ccb5f70 --- /dev/null +++ b/plugin/tdeqt4painter.h @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Definition of TDEQt4PaintDevice class +** +** Copyright (C) 2012 Timothy Pearson. All rights reserved. +** +** This file is part of the TDE Qt4 style interface +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef TDEQT4PAINTER_H +#define TDEQT4PAINTER_H + +#define TQT_NO_COMPAT_NAMES +#include "ntqpaintdevice.h" +#include "ntqbuffer.h" +#undef Qt + +#include +#include + +class Q_EXPORT TDEQt4PaintDevice : public TQPaintDevice // picture class +{ +public: + TDEQt4PaintDevice( QPainter * ); + ~TDEQt4PaintDevice(); + +protected: + bool cmd( int, TQPainter *, TQPDevCmdParam * ); + int metric( int ) const; + +private: + QPainter *m_qt4painter; + + QPoint prevPt; + QPoint curPt; +}; + +#endif // TDEQT4PAINTER_H diff --git a/styleplugin.pro b/styleplugin.pro new file mode 100644 index 0000000..74ae208 --- /dev/null +++ b/styleplugin.pro @@ -0,0 +1,13 @@ +TEMPLATE = subdirs +SUBDIRS = stylewindow \ + plugin \ + unstyledwindow + + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS styleplugin.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin +INSTALLS += target sources + +symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) diff --git a/styles/libsimplestyleplugin.so b/styles/libsimplestyleplugin.so new file mode 100755 index 0000000000000000000000000000000000000000..38b6bbe6240a6d4cafe1c871f5e1fd9796e6c6c9 GIT binary patch literal 144021 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⋙`4zn8k<+~k?|=s> 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 + +#include "stylewindow.h" + +//! [0] +int main(int argv, char *args[]) +{ + QApplication app(argv, args); + QApplication::setStyle(QStyleFactory::create("simplestyle")); + + StyleWindow window; + window.resize(200, 50); + window.show(); + + return app.exec(); +} +//! [0] diff --git a/stylewindow/stylewindow.cpp b/stylewindow/stylewindow.cpp new file mode 100644 index 0000000..7ede04c --- /dev/null +++ b/stylewindow/stylewindow.cpp @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "stylewindow.h" + +StyleWindow::StyleWindow() +{ + QPushButton *styledButton = new QPushButton(tr("Big Red Button")); + QRadioButton *styledRadioButton = new QRadioButton(tr("Little Radio Button")); + QCheckBox *styledCheckBox = new QCheckBox(tr("Little Check Box")); + QComboBox *styledComboBox = new QComboBox(); + QTextEdit *styledTextEdit = new QTextEdit(); + QProgressBar *styledProgressBar = new QProgressBar(); + QTabBar *styledTabBar = new QTabBar(); + QToolBar *styledToolBar = new QToolBar(); + + QGridLayout *layout = new QGridLayout; + layout->addWidget(styledButton); + layout->addWidget(styledRadioButton); + layout->addWidget(styledCheckBox); + layout->addWidget(styledComboBox); + layout->addWidget(styledTextEdit); + layout->addWidget(styledProgressBar); + layout->addWidget(styledTabBar); + layout->addWidget(styledToolBar); + + styledComboBox->addItem("Hello"); + styledComboBox->addItem("There"); + styledComboBox->addItem("Raja!"); + styledTextEdit->setText("TEST"); + styledProgressBar->setMaximum(100); + styledProgressBar->setValue(50); + styledTabBar->addTab("Tab 1"); + styledTabBar->addTab("Tab 2"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab 3"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab Duplicate"); + + styledToolBar->addAction("Save"); + + QGroupBox *styleBox = new QGroupBox(tr("A simple style button")); + styleBox->setLayout(layout); + + QGridLayout *outerLayout = new QGridLayout; + outerLayout->addWidget(styleBox, 0, 0); + setLayout(outerLayout); + + setWindowTitle(tr("Style Plugin Example")); +} diff --git a/stylewindow/stylewindow.h b/stylewindow/stylewindow.h new file mode 100644 index 0000000..aed21c7 --- /dev/null +++ b/stylewindow/stylewindow.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef STYLEWINDOW_H +#define STYLEWINDOW_H + +#include + +class StyleWindow : public QWidget +{ + Q_OBJECT + +public: + StyleWindow(); +}; + +#endif diff --git a/stylewindow/stylewindow.pro b/stylewindow/stylewindow.pro new file mode 100644 index 0000000..8ed1541 --- /dev/null +++ b/stylewindow/stylewindow.pro @@ -0,0 +1,19 @@ +HEADERS = stylewindow.h +SOURCES = stylewindow.cpp \ + main.cpp + +TARGET = styleplugin +win32 { + debug:DESTDIR = ../debug/ + release:DESTDIR = ../release/ +} else { + DESTDIR = ../ +} + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS stylewindow.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/stylewindow +INSTALLS += target sources + +symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) diff --git a/thingstofix.txt b/thingstofix.txt new file mode 100644 index 0000000..f33e5ee --- /dev/null +++ b/thingstofix.txt @@ -0,0 +1,47 @@ +find ./ -type f -iname "*" -exec sed -i 's/TTQ/TQ/g' {} \; + +find ./ -type f -iname "*" -exec sed -i 's/QT_VERSION_STR/TQT_VERSION_STR/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_VERSION/TQT_VERSION/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_BUILD_KEY/TQT_BUILD_KEY/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/Q_PACKED/TQ_PACKED/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/Q_INT64_C/TQ_INT64_C/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/Q_UINT64_C/TQ_UINT64_C/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/Q_CHECK_PTR/TQ_CHECK_PTR/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/Q_DISABLE_COPY/TQ_DISABLE_COPY/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_MODULE_NETWORK/TQT_MODULE_NETWORK/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_MODULE_OPENGL/TQT_MODULE_OPENGL/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_MODULE_SQL/TQT_MODULE_SQL/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_MODULE_XML/TQT_MODULE_XML/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/QT_TR_FUNCTIONS/TQT_TR_FUNCTIONS/g' {} \; + +# Q_OBJECT + +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qRound/\1tqRound/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qSwap/\1tqSwap/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qstrlen/\1tqstrlen/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qstrncmp/\1tqstrncmp/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qUncompress/\1tqUncompress/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qCopy/\1tqCopy/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qCopyBackward/\1tqCopyBackward/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qEqual/\1tqEqual/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qFill/\1tqFill/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qFind/\1tqFind/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qCount/\1tqCount/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qHash/\1tqHash/g' {} \; +find ./ -type f -iname "*" -exec sed -i 's/\([ \t]\)qAppName/\1tqAppName/g' {} \; + +qint8 +quint8 +qint16 +quint16 +qint32 +quint32 +qint64 +quint64 +qlonglong +qulonglong + +QTypeInfo +QTextStream +QDebug +QMetaTypeId2 \ No newline at end of file diff --git a/tqt3reference/Makefile b/tqt3reference/Makefile new file mode 100644 index 0000000..b3caed5 --- /dev/null +++ b/tqt3reference/Makefile @@ -0,0 +1,167 @@ +############################################################################# +# Makefile for building: ../tqt3referencewindow +# Generated by qmake (1.07a) (TQt 3.4.0) on: Tue Mar 6 12:56:29 2012 +# Project: stylewindow.pro +# Template: app +# Command: $(QMAKE) -o Makefile stylewindow.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +LEX = flex +YACC = yacc +CFLAGS = -pipe -g -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT +CXXFLAGS = -pipe -g -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT +LEXFLAGS = +YACCFLAGS= -d +INCPATH = -I/usr/share/tqt3/mkspecs/default -I. -I/usr/include/tqt3 -I/usr/include/tqt -I/opt/trinity/include -I/usr/include/tqt3 +LINK = g++ +LFLAGS = +LIBS = $(SUBLIBS) -L/usr/share/tqt3/lib -L/usr/X11R6/lib -L/usr/lib -ltqt -L /opt/trinity/lib -lDCOP -ltdecore -ltqt-mt -lXext -lX11 -lm -lpthread +AR = ar cqs +RANLIB = +MOC = /usr/share/tqt3/bin/moc +UIC = /usr/share/tqt3/bin/uic +QMAKE = qmake +TAR = tar -cf +GZIP = gzip -9f +COPY = cp -f +COPY_FILE= $(COPY) +COPY_DIR = $(COPY) -r +INSTALL_FILE= $(COPY_FILE) +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = rm -f +SYMLINK = ln -sf +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +HEADERS = stylewindow.h +SOURCES = stylewindow.cpp \ + main.cpp +OBJECTS = stylewindow.o \ + main.o +FORMS = +UICDECLS = +UICIMPLS = +SRCMOC = moc_stylewindow.cpp +OBJMOC = moc_stylewindow.o +DIST = stylewindow.pro +QMAKE_TARGET = tqt3referencewindow +DESTDIR = ../ +TARGET = ../tqt3referencewindow + +first: all +####### Implicit rules + +.SUFFIXES: .c .o .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) + test -d ../ || mkdir -p ../ + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(OBJCOMP) $(LIBS) + +mocables: $(SRCMOC) +uicables: $(UICDECLS) $(UICIMPLS) + +$(MOC): + ( cd $(QTDIR)/src/moc && $(MAKE) ) + +Makefile: stylewindow.pro /usr/share/tqt3/mkspecs/default/qmake.conf /usr/share/tqt3/lib/libtqt-mt.prl + $(QMAKE) -o Makefile stylewindow.pro +qmake: + @$(QMAKE) -o Makefile stylewindow.pro + +dist: + @mkdir -p .tmp/tqt3referencewindow && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .tmp/tqt3referencewindow/ && ( cd `dirname .tmp/tqt3referencewindow` && $(TAR) tqt3referencewindow.tar tqt3referencewindow && $(GZIP) tqt3referencewindow.tar ) && $(MOVE) `dirname .tmp/tqt3referencewindow`/tqt3referencewindow.tar.gz . && $(DEL_FILE) -r .tmp/tqt3referencewindow + +mocclean: + -$(DEL_FILE) $(OBJMOC) + -$(DEL_FILE) $(SRCMOC) + +uiclean: + +yaccclean: +lexclean: +clean: mocclean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) ../$(TARGET) $(TARGET) + + +FORCE: + +####### Compile + +stylewindow.o: stylewindow.cpp stylewindow.h + +main.o: main.cpp stylewindow.h + +moc_stylewindow.o: moc_stylewindow.cpp stylewindow.h + +moc_stylewindow.cpp: $(MOC) stylewindow.h + $(MOC) stylewindow.h -o moc_stylewindow.cpp + +####### Install + +install_target: all + @$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)/tools/tqt3reference/" || $(MKDIR) "$(INSTALL_ROOT)/tools/tqt3reference/" + -$(INSTALL_FILE) "../$(QMAKE_TARGET)" "$(INSTALL_ROOT)/tools/tqt3reference/$(QMAKE_TARGET)" + +uninstall_target: + -$(DEL_FILE) "$(INSTALL_ROOT)/tools/tqt3reference/$(QMAKE_TARGET)" + -$(DEL_DIR) "$(INSTALL_ROOT)/tools/tqt3reference/" + + +install_sources: all + @$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" || $(MKDIR) "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" + -$(INSTALL_FILE) "stylewindow.cpp" "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" + -$(INSTALL_FILE) "main.cpp" "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" + -$(INSTALL_FILE) "stylewindow.h" "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" + -$(INSTALL_FILE) "stylewindow.pro" "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" + + +uninstall_sources: + -$(DEL_FILE) -r "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/stylewindow.cpp" + -$(DEL_FILE) -r "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/main.cpp" + -$(DEL_FILE) -r "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/stylewindow.h" + -$(DEL_FILE) -r "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/stylewindow.pro" + -$(DEL_DIR) "$(INSTALL_ROOT)/tools/styleplugin/tqt3reference/" + + +install: install_target install_sources + +uninstall: uninstall_target uninstall_sources + diff --git a/tqt3reference/main.cpp b/tqt3reference/main.cpp new file mode 100644 index 0000000..9ce35a8 --- /dev/null +++ b/tqt3reference/main.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "stylewindow.h" + +//! [0] +int main(int argv, char *args[]) +{ + TQApplication app(argv, args); + + StyleWindow window; + window.resize(200, 200); + window.show(); + + return app.exec(); +} +//! [0] diff --git a/tqt3reference/stylewindow.cpp b/tqt3reference/stylewindow.cpp new file mode 100644 index 0000000..0a5ca48 --- /dev/null +++ b/tqt3reference/stylewindow.cpp @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "stylewindow.h" + +StyleWindow::StyleWindow() +{ + TQGroupBox *styleBox = new TQGroupBox(10,TQt::Vertical,tr("A simple style button"),this); +// styleBox->resize(200,200); + + TQPushButton *styledButton = new TQPushButton(tr("Big Red Button"),styleBox); + TQRadioButton *styledRadioButton = new TQRadioButton(tr("Little Radio Button"),styleBox); + TQCheckBox *styledCheckBox = new TQCheckBox(tr("Little Check Box"),styleBox); + TQComboBox *styledComboBox = new TQComboBox(styleBox); + TQTextEdit *styledTextEdit = new TQTextEdit(styleBox); + TQProgressBar *styledProgressBar = new TQProgressBar(styleBox); + TQTabBar *styledTabBar = new TQTabBar(styleBox); + TQMainWindow *styledMainWindow = new TQMainWindow(this); + +// TQGridLayout *layout = new TQGridLayout(styleBox); +// layout->addWidget(styledButton,0,0); +// layout->addWidget(styledRadioButton,1,0); +// layout->addWidget(styledCheckBox,2,0); +// layout->addWidget(styledComboBox,3,0); +// layout->addWidget(styledTextEdit,4,0); +// layout->addWidget(styledProgressBar,5,0); +// layout->addWidget(styledTabBar,6,0); + + styledComboBox->insertItem("Hello"); + styledComboBox->insertItem("There"); + styledComboBox->insertItem("Raja!"); + styledTextEdit->setText("TEST"); + styledProgressBar->setTotalSteps(100); + styledProgressBar->setProgress(50); + + TQTab* tab1 = new TQTab("Tab 1"); + TQTab* tab2 = new TQTab("Tab 2"); + TQTab* tab3 = new TQTab("Tab Duplicate"); + TQTab* tab4 = new TQTab("Tab Duplicate"); + TQTab* tab5 = new TQTab("Tab Duplicate"); + TQTab* tab6 = new TQTab("Tab 3"); + TQTab* tab7 = new TQTab("Tab Duplicate"); + TQTab* tab8 = new TQTab("Tab Duplicate"); + + styledTabBar->addTab(tab1); + styledTabBar->addTab(tab2); + styledTabBar->addTab(tab3); + styledTabBar->addTab(tab4); + styledTabBar->addTab(tab5); + styledTabBar->addTab(tab6); + styledTabBar->addTab(tab7); + styledTabBar->addTab(tab8); + + TQToolBar *styledToolBar = new TQToolBar(styledMainWindow); + TQAction* toolbutton1 = new TQAction(styledToolBar); + toolbutton1->setText("Save"); + toolbutton1->addTo(styledToolBar); + + TQGridLayout *outerLayout = new TQGridLayout(this); + outerLayout->addWidget(styleBox, 0, 0); + +// setWindowTitle(tr("Style Plugin Example")); +} diff --git a/tqt3reference/stylewindow.h b/tqt3reference/stylewindow.h new file mode 100644 index 0000000..cd35077 --- /dev/null +++ b/tqt3reference/stylewindow.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef STYLEWINDOW_H +#define STYLEWINDOW_H + +#include + +class StyleWindow : public TQWidget +{ + TQ_OBJECT + +public: + StyleWindow(); +}; + +#endif diff --git a/tqt3reference/stylewindow.pro b/tqt3reference/stylewindow.pro new file mode 100644 index 0000000..880e672 --- /dev/null +++ b/tqt3reference/stylewindow.pro @@ -0,0 +1,24 @@ +HEADERS = stylewindow.h +SOURCES = stylewindow.cpp \ + main.cpp + +TARGET = tqt3referencewindow +win32 { + debug:DESTDIR = ../debug/ + release:DESTDIR = ../release/ +} else { + DESTDIR = ../ +} + +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 + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/tools/tqt3reference +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS stylewindow.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/tqt3reference +INSTALLS += target sources + +symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) diff --git a/unstyledwindow/Makefile b/unstyledwindow/Makefile new file mode 100644 index 0000000..f7cca12 --- /dev/null +++ b/unstyledwindow/Makefile @@ -0,0 +1,239 @@ +############################################################################# +# Makefile for building: ../unstyledplugin +# Generated by qmake (2.01a) (Qt 4.7.0) on: Sat Mar 10 16:06:19 2012 +# Project: unstyledwindow.pro +# Template: app +# Command: /usr/bin/qmake-qt4 -o Makefile unstyledwindow.pro +############################################################################# + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED +CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) +CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(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. +LINK = g++ +LFLAGS = -Wl,-O1 +LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtCore -lpthread +AR = ar cqs +RANLIB = +QMAKE = /usr/bin/qmake-qt4 +TAR = tar -cf +COMPRESS = gzip -9f +COPY = cp -f +SED = sed +COPY_FILE = $(COPY) +COPY_DIR = $(COPY) -r +STRIP = strip +INSTALL_FILE = install -m 644 -p +INSTALL_DIR = $(COPY_DIR) +INSTALL_PROGRAM = install -m 755 -p +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = stylewindow.cpp \ + main.cpp moc_stylewindow.cpp +OBJECTS = stylewindow.o \ + main.o \ + moc_stylewindow.o +DIST = /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf \ + unstyledwindow.pro +QMAKE_TARGET = unstyledplugin +DESTDIR = ../ +TARGET = ../unstyledplugin + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +all: Makefile $(TARGET) + +$(TARGET): $(OBJECTS) + @$(CHK_DIR_EXISTS) ../ || $(MKDIR) ../ + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +Makefile: unstyledwindow.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \ + /usr/share/qt4/mkspecs/common/unix.conf \ + /usr/share/qt4/mkspecs/common/linux.conf \ + /usr/share/qt4/mkspecs/qconfig.pri \ + /usr/share/qt4/mkspecs/features/qt_functions.prf \ + /usr/share/qt4/mkspecs/features/qt_config.prf \ + /usr/share/qt4/mkspecs/features/exclusive_builds.prf \ + /usr/share/qt4/mkspecs/features/default_pre.prf \ + /usr/share/qt4/mkspecs/features/release.prf \ + /usr/share/qt4/mkspecs/features/default_post.prf \ + /usr/share/qt4/mkspecs/features/warn_on.prf \ + /usr/share/qt4/mkspecs/features/qt.prf \ + /usr/share/qt4/mkspecs/features/unix/thread.prf \ + /usr/share/qt4/mkspecs/features/moc.prf \ + /usr/share/qt4/mkspecs/features/resources.prf \ + /usr/share/qt4/mkspecs/features/uic.prf \ + /usr/share/qt4/mkspecs/features/yacc.prf \ + /usr/share/qt4/mkspecs/features/lex.prf \ + /usr/share/qt4/mkspecs/features/include_source_dir.prf \ + /usr/lib/libQtGui.prl \ + /usr/lib/libQtCore.prl + $(QMAKE) -o Makefile unstyledwindow.pro +/usr/share/qt4/mkspecs/common/g++.conf: +/usr/share/qt4/mkspecs/common/unix.conf: +/usr/share/qt4/mkspecs/common/linux.conf: +/usr/share/qt4/mkspecs/qconfig.pri: +/usr/share/qt4/mkspecs/features/qt_functions.prf: +/usr/share/qt4/mkspecs/features/qt_config.prf: +/usr/share/qt4/mkspecs/features/exclusive_builds.prf: +/usr/share/qt4/mkspecs/features/default_pre.prf: +/usr/share/qt4/mkspecs/features/release.prf: +/usr/share/qt4/mkspecs/features/default_post.prf: +/usr/share/qt4/mkspecs/features/warn_on.prf: +/usr/share/qt4/mkspecs/features/qt.prf: +/usr/share/qt4/mkspecs/features/unix/thread.prf: +/usr/share/qt4/mkspecs/features/moc.prf: +/usr/share/qt4/mkspecs/features/resources.prf: +/usr/share/qt4/mkspecs/features/uic.prf: +/usr/share/qt4/mkspecs/features/yacc.prf: +/usr/share/qt4/mkspecs/features/lex.prf: +/usr/share/qt4/mkspecs/features/include_source_dir.prf: +/usr/lib/libQtGui.prl: +/usr/lib/libQtCore.prl: +qmake: FORCE + @$(QMAKE) -o Makefile unstyledwindow.pro + +dist: + @$(CHK_DIR_EXISTS) .tmp/unstyledplugin1.0.0 || $(MKDIR) .tmp/unstyledplugin1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/unstyledplugin1.0.0/ && $(COPY_FILE) --parents stylewindow.h .tmp/unstyledplugin1.0.0/ && $(COPY_FILE) --parents stylewindow.cpp main.cpp .tmp/unstyledplugin1.0.0/ && (cd `dirname .tmp/unstyledplugin1.0.0` && $(TAR) unstyledplugin1.0.0.tar unstyledplugin1.0.0 && $(COMPRESS) unstyledplugin1.0.0.tar) && $(MOVE) `dirname .tmp/unstyledplugin1.0.0`/unstyledplugin1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/unstyledplugin1.0.0 + + +clean:compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +####### Sub-libraries + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile + + +check: first + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +compiler_moc_header_make_all: moc_stylewindow.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_stylewindow.cpp +moc_stylewindow.cpp: stylewindow.h + /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) stylewindow.h -o moc_stylewindow.cpp + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_image_collection_make_all: qmake_image_collection.cpp +compiler_image_collection_clean: + -$(DEL_FILE) qmake_image_collection.cpp +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean + +####### Compile + +stylewindow.o: stylewindow.cpp stylewindow.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o stylewindow.o stylewindow.cpp + +main.o: main.cpp stylewindow.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp + +moc_stylewindow.o: moc_stylewindow.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_stylewindow.o moc_stylewindow.cpp + +####### Install + +install_target: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/ || $(MKDIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/ + -$(INSTALL_PROGRAM) "../$(QMAKE_TARGET)" "$(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/$(QMAKE_TARGET)" + -$(STRIP) "$(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/$(QMAKE_TARGET)" + +uninstall_target: FORCE + -$(DEL_FILE) "$(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/$(QMAKE_TARGET)" + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/ + + +install_sources: first FORCE + @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ || $(MKDIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/unstyledwindow/stylewindow.cpp $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/unstyledwindow/main.cpp $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/unstyledwindow/stylewindow.h $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ + -$(INSTALL_FILE) /home/eldarion/experimental/qt4-tqt-theme-engine/unstyledwindow/unstyledwindow.pro $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ + + +uninstall_sources: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/stylewindow.cpp + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/main.cpp + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/stylewindow.h + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/unstyledwindow.pro + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/qt4/examples/tools/unstyledplugin/unstyledwindow/ + + +install: install_target install_sources FORCE + +uninstall: uninstall_target uninstall_sources FORCE + +FORCE: + diff --git a/unstyledwindow/main.cpp b/unstyledwindow/main.cpp new file mode 100644 index 0000000..6e2ad29 --- /dev/null +++ b/unstyledwindow/main.cpp @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "stylewindow.h" + +//! [0] +int main(int argv, char *args[]) +{ + QApplication app(argv, args); + QApplication::setStyle(QStyleFactory::create("plastique")); + + StyleWindow window; + window.resize(200, 50); + window.show(); + + return app.exec(); +} +//! [0] diff --git a/unstyledwindow/stylewindow.cpp b/unstyledwindow/stylewindow.cpp new file mode 100644 index 0000000..7d3f5f1 --- /dev/null +++ b/unstyledwindow/stylewindow.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include "stylewindow.h" + +StyleWindow::StyleWindow() +{ + QPushButton *styledButton = new QPushButton(tr("Big Red Button")); + QRadioButton *styledRadioButton = new QRadioButton(tr("Little Radio Button")); + QCheckBox *styledCheckBox = new QCheckBox(tr("Little Check Box")); + QComboBox *styledComboBox = new QComboBox(); + QTextEdit *styledTextEdit = new QTextEdit(); + QProgressBar *styledProgressBar = new QProgressBar(); + QTabBar *styledTabBar = new QTabBar(); + + QGridLayout *layout = new QGridLayout; + layout->addWidget(styledButton); + layout->addWidget(styledRadioButton); + layout->addWidget(styledCheckBox); + layout->addWidget(styledComboBox); + layout->addWidget(styledTextEdit); + layout->addWidget(styledProgressBar); + layout->addWidget(styledTabBar); + + styledComboBox->addItem("Hello"); + styledComboBox->addItem("There"); + styledComboBox->addItem("Raja!"); + styledTextEdit->setText("TEST"); + styledProgressBar->setMaximum(100); + styledProgressBar->setValue(50); + styledTabBar->addTab("Tab 1"); + styledTabBar->addTab("Tab 2"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab 3"); + styledTabBar->addTab("Tab Duplicate"); + styledTabBar->addTab("Tab Duplicate"); + + QGroupBox *styleBox = new QGroupBox(tr("A simple style button")); + styleBox->setLayout(layout); + + QGridLayout *outerLayout = new QGridLayout; + outerLayout->addWidget(styleBox, 0, 0); + setLayout(outerLayout); + + setWindowTitle(tr("Style Plugin Example")); +} diff --git a/unstyledwindow/stylewindow.h b/unstyledwindow/stylewindow.h new file mode 100644 index 0000000..aed21c7 --- /dev/null +++ b/unstyledwindow/stylewindow.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef STYLEWINDOW_H +#define STYLEWINDOW_H + +#include + +class StyleWindow : public QWidget +{ + Q_OBJECT + +public: + StyleWindow(); +}; + +#endif diff --git a/unstyledwindow/unstyledwindow.pro b/unstyledwindow/unstyledwindow.pro new file mode 100644 index 0000000..e7a2ef4 --- /dev/null +++ b/unstyledwindow/unstyledwindow.pro @@ -0,0 +1,19 @@ +HEADERS = stylewindow.h +SOURCES = stylewindow.cpp \ + main.cpp + +TARGET = unstyledplugin +win32 { + debug:DESTDIR = ../debug/ + release:DESTDIR = ../release/ +} else { + DESTDIR = ../ +} + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/tools/unstyledplugin +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS unstyledwindow.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/tools/unstyledplugin/unstyledwindow +INSTALLS += target sources + +symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)