summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Rules.make3
-rw-r--r--config.in5
-rw-r--r--library/qpeapplication.cpp2499
3 files changed, 1247 insertions, 1260 deletions
diff --git a/Rules.make b/Rules.make
index 779f4b1..8511422 100644
--- a/Rules.make
+++ b/Rules.make
@@ -1,309 +1,306 @@
.phony: force
force:
$(configs) :
$(call makecfg,$@)
$(TOPDIR)/gen.pro : $(TOPDIR)/.config
echo > $@
# added for threaded version
ifneq ($(CONFIG_THREADED),)
echo CONFIG += thread >> $@
else
echo CONFIG -= thread >> $@
endif
ifneq ($(CONFIG_DEBUG),)
echo CONFIG += debug >> $@
echo CONFIG -= release >> $@
echo DEFINES += "QT_COMPONENT_DEBUG=2" >> $@
echo DEFINES += QT_DEBUG >> $@
else
echo CONFIG -= debug >> $@
echo CONFIG += release >> $@
echo DEFINES += "OPIE_NO_DEBUG" >> $@
endif
ifeq ($(CONFIG_STATIC),y)
echo CONFIG += staticlib >> $@
endif
ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3
echo CONFIG -= qt3 >> $@
else
echo CONFIG += qt3 >> $@
endif
ifneq ($(CONFIG_QUICK_LAUNCH),)
echo contains\( CONFIG, quick-app \) \{ >> $@
echo CONFIG -= staticlib >> $@
echo CONFIG -= quick-app >> $@
echo CONFIG += quick-app-lib >> $@
echo QUICKLAUNCH_PATH = $(CONFIG_QUICKLAUNCH_PATH) >> $@
echo \} >> $@
else
echo contains\( CONFIG, quick-app \) \{ >> $@
echo CONFIG -= quick-app >> $@
echo CONFIG += quick-app-bin >> $@
echo \} >> $@
endif
ifeq ($(CONFIG_SQL_PIM_BACKEND),y)
echo ENABLE_SQL_PIM_BACKEND=$(CONFIG_SQL_PIM_BACKEND) >> $@
else
echo ENABLE_SQL_PIM_BACKEND=n >> $@
endif
ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y)
echo CONFIG += no-override >> $@
endif
ifeq ($(CONFIG_OPIE_NO_ERASERECT_FIX),y)
echo DEFINES += OPIE_NO_ERASE_RECT_HACKFIX >> $@
endif
ifeq ($(CONFIG_OPIE_NO_BUILTIN_SHUTDOWN),y)
echo DEFINES += OPIE_NO_BUILTIN_SHUTDOWN >> $@
endif
ifeq ($(CONFIG_OPIE_NO_BUILTIN_CALIBRATE),y)
echo DEFINES += OPIE_NO_BUILTIN_CALIBRATE >> $@
endif
ifeq ($(CONFIG_USE_REALTIME_AUDIO_THREAD),y)
echo DEFINES += USE_REALTIME_AUDIO_THREAD >> $@
endif
ifeq ($(CONFIG_USE_FILE_NOTIFICATION),y)
echo DEFINES += USE_FILE_NOTIFICATION >> $@
endif
ifeq ($(CONFIG_QT_QWS_ALLOW_CLOCK),y)
echo DEFINES += QT_QWS_ALLOW_OVERCLOCK >> $@
endif
-ifeq ($(CONFIG_OPIE_HIGH_RES_SMALL_PHY),y)
- echo DEFINES += OPIE_HIGH_RES_SMALL_PHY >> $@
-endif
ifeq ($(CONFIG_OPIE_NEW_ALLOC),y)
echo DEFINES += OPIE_NEW_MALLOC >> $@
endif
ifeq ($(CONFIG_OPIE_NO_SOUND_PCM_READ_BITS),y)
echo DEFINES += OPIE_NO_SOUND_PCM_READ_BITS >> $@
endif
echo DEFINES += OPIE_SOUND_FRAGMENT_SHIFT=$(CONFIG_OPIE_SOUND_FRAGMENT_SHIFT) >> $@
ifeq ($(CONFIG_OPIE_WE_VERSION_OVERRIDE),y)
echo DEFINES += OPIE_WE_VERSION=$(CONFIG_OPIE_WE_VERSION) >> $@
endif
# Write LIB dirs and INC dirs...
ifeq ($(CONFIG_LIBETPAN_DEP),y)
echo LIBETPAN_LIB_DIR = $(CONFIG_LIBETPAN_LIB_DIR) >> $@
echo LIBETPAN_INC_DIR = $(CONFIG_LIBETPAN_INC_DIR) >> $@
endif
ifeq ($(CONFIG_LIBPCAP_DEP),y)
echo LIBPCAP_LIB_DIR = $(CONFIG_LIBPCAP_LIB_DIR) >> $@
echo LIBPCAP_INC_DIR = $(CONFIG_LIBPCAP_INC_DIR) >> $@
endif
ifeq ($(CONFIG_LIBSQLITE_DEP),y)
echo LIBSQLITE_LIB_DIR = $(CONFIG_LIBSQLITE_LIB_DIR) >> $@
echo LIBSQLITE_INC_DIR = $(CONFIG_LIBSQLITE_INC_DIR) >> $@
endif
ifeq ($(CONFIG_LIBXINE_DEP),y)
echo LIBXINE_LIB_DIR = $(CONFIG_LIBXINE_LIB_DIR) >> $@
echo LIBXINE_INC_DIR = $(CONFIG_LIBXINE_INC_DIR) >> $@
endif
ifeq ($(CONFIG_LIBIPK_DEP),y)
echo LIBIPK_LIB_DIR = $(CONFIG_LIBIPK_LIB_DIR) >> $@
echo LIBIPK_INC_DIR = $(CONFIG_LIBIPK_INC_DIR) >> $@
endif
ifeq ($(CONFIG_LIBSDK_DEP),y)
echo LIBSDL_LIB_DIR = $(CONFIG_LIBSDL_LIB_DIR) >> $@
echo LIBSDL_INC_DIR = $(CONFIG_LIBSDL_INC_DIR) >> $@
endif
ifeq ($(CONFIG_LIBSWORD_DEP),y)
echo LIBSWORD_LIB_DIR = $(CONFIG_LIBSWORD_LIB_DIR) >> $@
echo LIBSWORD_INC_DIR = $(CONFIG_LIBSWORD_INC_DIR) >> $@
endif
$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages
@echo Generating dependency information...
# add to subdir-y, and add descend rules
@cat $(TOPDIR)/packages | grep -v '^#' | \
awk '{print \
".PHONY : " $$2 "\n" \
"subdir-$$(" $$1 ") += " $$2 "\n\n"; \
print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends
cat $(TOPDIR)/packages | grep -v '^#' | \
perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(QMAKE) \$$(OPIEDIR)/gen.pro \$$(OPIEDIR)/.config\n\t\$$(call makefilegen,\$$@)\n\n"; }' \
>> $(TOPDIR)/.depends
# interpackage dependency generation
@cat $(TOPDIR)/packages | \
$(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends
$(TOPDIR)/.depends.cfgs:
# config.in interdependencies
@echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs
@cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $@
@-rm -f dirs
$(QTDIR)/stamp-headers :
@-rm -f $(QTDIR)/stamp-headers*
( cd $(QTDIR)/include; \
$(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \
qcopchannel_qws.h qwindowsystem_qws.h \
qfontmanager_qws.h qwsdefaultdecoration_qws.h))
touch $@
$(QTDIR)/stamp-headers-x11 :
@-rm -f $(QTDIR)/stamp-headers*
cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h)
touch $@
$(OPIEDIR)/stamp-headers :
@-rm -f $(OPIEDIR)/stamp-headers*
mkdir -p $(TOPDIR)/include/qpe \
$(TOPDIR)/include/qtopia \
$(TOPDIR)/include/opie \
$(TOPDIR)/include/opie2 \
$(TOPDIR)/include/qtopia/private \
$(TOPDIR)/include/sl
( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
ifeq ($(CONFIG_LIBOPIE),y)
# libopie1
( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
( cd include/opie && ln -sf ../../libopie/big-screen/*.h .; )
endif
# libopie2
( cd include/opie2 && ln -sf ../../libopie2/opiecore/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiecore/device/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiemm/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiedb/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opienet/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiepim/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/backends/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiepim/ui/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opieui/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opieui/fileselector/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opieui/big-screen/*.h .; )
( cd include/opie2 && ln -sf ../../libopie2/opiesecurity/*.h .; )
# auxilliary libraries
( cd include/opie2 && ln -sf ../../libqtaux/*.h .; )
( cd include/sl && ln -sf ../../libslcompat/*.h .; )
( cd include/ && ln -sf ../noncore/net/ftplib/*.h .; )
( cd include/ && ln -sf ../inputmethods/pickboard/pickboardcfg.h .; )
( cd include/ && ln -sf ../inputmethods/pickboard/pickboardpicks.h .; )
# all
ifeq ($(CONFIG_LIBOPIE),y)
( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done )
endif
( cd include/opie2; for generatedHeader in `cd ../../libopie2/opieui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
ln -sf ../../libopie2/opieui/$$generatedHeader $$generatedHeader; done )
( cd include/opie2; for generatedHeader in `cd ../../libopie2/opiepim/ui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
ln -sf ../../libopie2/opiepim/ui/$$generatedHeader $$generatedHeader; done )
ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h
touch $@
$(OPIEDIR)/stamp-headers-x11 :
@-rm -f $(OPIEDIR)/stamp-headers*
mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \
$(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private
( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
( cd include/opie && ln -sf ../../libsql/*.h .; )
( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done )
ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h
( cd include/qpe; ln -sf ../../x11/libqpe-x11/qpe/*.h .; )
touch $@
$(TOPDIR)/library/custom.h : $(TOPDIR)/.config
@-rm -f $@
@$(if $(patsubst "%",%,$(CONFIG_CUSTOMFILE)),\
ln -sf $(patsubst "%",%,$(CONFIG_CUSTOMFILE)) $@)
@touch $@
$(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf $(TOPDIR)/scripts/kconfig/conf $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/qmake/qmake:
@$(call descend,$(shell dirname $@),$(shell basename $@))
menuconfig: $(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf ./config.in
$(TOPDIR)/scripts/kconfig/mconf ./config.in
@touch ./.config.stamp
xconfig: $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in
$(TOPDIR)/scripts/kconfig/qconf ./config.in
@touch .config.stamp
gconfig: $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in
$(TOPDIR)/scripts/kconfig/gconf ./config.in
@touch .config.stamp
config: $(TOPDIR)/scripts/kconfig/conf ./config.in
$(TOPDIR)/scripts/kconfig/conf ./config.in
@touch .config.stamp
oldconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
$(TOPDIR)/scripts/kconfig/conf -o ./config.in
@touch .config.stamp
randconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
$(TOPDIR)/scripts/kconfig/conf -r ./config.in
@touch .config.stamp
allyesconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
$(TOPDIR)/scripts/kconfig/conf -y ./config.in
@touch .config.stamp
allnoconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
$(TOPDIR)/scripts/kconfig/conf -n ./config.in
@touch .config.stamp
defconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
$(TOPDIR)/scripts/kconfig/conf -d ./config.in
@touch .config.stamp
$(TOPDIR)/qmake/qmake : $(TOPDIR)/mkspecs/default
$(TOPDIR)/mkspecs/default :
ln -sf linux-g++ $@
$(TOPDIR)/scripts/subst : force
@( \
echo 's,\$$QPE_VERSION,$(QPE_VERSION),g'; \
echo 's,\$$OPIE_VERSION,$(OPIE_VERSION),g'; \
echo 's,\$$QTE_VERSION,$(QTE_VERSION),g'; \
echo 's,\$$QTE_REVISION,$(QTE_REVISION),g'; \
echo 's,\$$SUB_VERSION,$(SUB_VERSION),g'; \
echo 's,\$$EXTRAVERSION,$(EXTRAVERSION),g'; \
echo 's,\$$QTE_BASEVERSION,$(QTE_BASEVERSION),g'; \
) > $@ || ( rm -f $@; exit 1 )
$(TOPDIR)/scripts/filesubst : force
@( \
echo 's,\$$OPIEDIR/root/,/,g'; \
echo 's,$(OPIEDIR)/root/,/,g'; \
echo 's,\$$OPIEDIR,$(prefix),g'; \
echo 's,$(OPIEDIR),$(prefix),g'; \
echo 's,\$$QTDIR,$(prefix),g'; \
echo 's,$(QTDIR),$(prefix),g'; \
echo 's,^\(\./\)*root/,/,g'; \
echo 's,^\(\./\)*etc/,$(prefix)/etc/,g'; \
echo 's,^\(\./\)*lib/,$(prefix)/lib/,g'; \
echo 's,^\(\./\)*bin/,$(prefix)/bin/,g'; \
echo 's,^\(\./\)*pics/,$(prefix)/pics/,g'; \
echo 's,^\(\./\)*sounds/,$(prefix)/sounds/,g'; \
echo 's,^\(\./\)*i18n/,$(prefix)/i18n/,g'; \
echo 's,^\(\./\)*plugins/,$(prefix)/plugins/,g'; \
echo 's,^\(\./\)*apps/,$(prefix)/apps/,g'; \
echo 's,^\(\./\)*share/,$(prefix)/share/,g'; \
echo 's,^\(\./\)*i18n/,$(prefix)/i18n/,g'; \
echo 's,^\(\./\)*help/,$(prefix)/help/,g'; \
) > $@ || ( rm -f $@; exit 1 )
## general rules ##
define descend
$(MAKE) $(if $(QMAKE),QMAKE=$(QMAKE)) -C $(1) $(2)
endef
define makefilegen
cd $(if $(1),$(shell dirname $(1))); $(TOPDIR)/qmake/qmake $(3) -o $(if $(1),$(shell basename $(1))) `cat $(OPIEDIR)/packages | grep " \`echo $(1)|sed -e 's,/Makefile$$,,'\` " | \
head -1 | awk '{print $$3}'`
endef
define makecfg
$(TOPDIR)/scripts/makecfg.pl $1 $(OPIEDIR)
endef
diff --git a/config.in b/config.in
index 60ebd65..9586a33 100644
--- a/config.in
+++ b/config.in
@@ -1,264 +1,259 @@
mainmenu "Opie Configuration"
menu "Build Parameters"
choice
prompt "Target Machine"
default TARGET_X86
help
Please select the architecture of the machine you will be
building the OpenZaurus buildroot for.
config TARGET_X86
boolean "Intel X86"
config TARGET_MACOSX
boolean "Mac OS X (DARWIN)"
config TARGET_SHARP
boolean "Sharp Zaurus w/ SA1100 (5000 and 5500)"
config TARGET_C700
boolean "Sharp Zaurus w/ PXA25x (5600, C7x0, C8x0)"
config TARGET_IPAQ
boolean "iPAQ"
config TARGET_RAMSES
boolean "Ramses"
config TARGET_SIMPAD
boolean "SIMpad"
config TARGET_YOPY
boolean "Yopy 3500/3700"
endchoice
config OPTIMIZE
boolean "Use optimizations"
default "y" if ! TARGET_X86
config THREADED
boolean "Enable threaded build"
default "n"
config STATIC
boolean "Build static libraries"
default "n"
config DEBUG
boolean "Enable debug builds"
default n
config RELEASE
bool
default y
depends !DEBUG
config QUICK_LAUNCH
boolean "Enable Quick Launch"
default n if TARGET_X86
default y if ! TARGET_X86
config QUICKLAUNCH_PATH
string "Path to quicklauncher"
default "./quicklauncher" if TARGET_X86
default "/opt/QtPalmtop/bin/quicklauncher" if ! TARGET_X86
config SPECFILE
string
default "qws/linux-generic-g++" if TARGET_X86 && (! X11)
default "linux-g++" if TARGET_X86 && X11
default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11)
default "linux-g++" if TARGET_SHARP && X11
default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11)
default "linux-g++" if TARGET_IPAQ && X11
default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11)
default "linux-g++" if TARGET_RAMSES && X11
default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11)
default "linux-g++" if TARGET_SIMPAD && X11
default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11)
default "qws/macx-generic-g++" if TARGET_MACOSX && (! X11)
config CUSTOMFILE
string
default "custom-ipaq.h" if TARGET_IPAQ
default "custom-sharp.h" if TARGET_SHARP
default "custom-ramses.h" if TARGET_RAMSES
default "custom-ipaq.h" if TARGET_SIMPAD
default "custom-yopy.h" if TARGET_YOPY
config OPTIMIZATIONS
string "Optimization flags"
depends OPTIMIZE
default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ
default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY
default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP
default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES
default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD
default "-march=armv5te -mtune=xscale -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_C700
config EXPERIMENTAL
bool "Prompt for development and/or incomplete items"
default y
endmenu
menu "Configuration"
config OPIE_NO_OVERRIDE_QT
boolean "Build Opie against an unpatched version of Qt"
default n
config OPIE_NO_ERASERECT_FIX
boolean "Disable Fixup eraseRect for HancomMobileWord,neocal.. to make libopiecore work on Sharps libqpe"
default n
config OPIE_NO_BUILTIN_SHUTDOWN
boolean "Disable the built in shutdown application"
default y
config OPIE_NO_BUILTIN_CALIBRATE
boolean "Disable the built in calibrate application"
default y if TARGET_YOPY
default n if ! TARGET_YOPY
config OPIE_SOUND_FRAGMENT_SHIFT
string "The sound fragment used in Opie Player I"
default "14" if TARGET_IPAQ
default "16" if ! TARGET_IPAQ
config USE_REALTIME_AUDIO_THREAD
boolean "Use a realtime thread in Opie Player I"
default y if TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP
default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP)
config QT_QWS_ALLOW_OVERCLOCK
boolean "Allow the user to overclock the device"
depends TARGET_RAMSES
default n
-config OPIE_HIGH_RES_SMALL_PHY
- boolean "Resolution is bigger than physical screen"
- default y if TARGET_C700
- default n if ! TARGET_C700
-
config USE_FILE_NOTIFICATION
boolean "Substitute (some) polling interfaces with OFileNotifier"
default y
config OPIE_NEW_ALLOC
boolean "Use malloc and free for the implementation"
default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP
default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP)
config OPIE_NO_SOUND_PCM_READ_BITS
boolean "There is not a pcm_read_bits io control"
default y if TARGET_SHARP
default n if ! TARGET_SHARP
endmenu
menu "Dependencies"
source dependencies.in
endmenu
menu "Base"
choice
prompt "Qpe Library Selection"
default LIBQPE
source library/config.in
source x11/config.in
endchoice
source libopie/config.in
source libopie2/config.in
source libqtaux/config.in
source rsync/config.in
source core/opie-login/config.in
source core/opiealarm/config.in
source core/tools/quicklauncher/config.in
source core/launcher/config.in
source core/symlinker/config.in
endmenu
comment ""
menu "Applets"
source core/applets/config.in
source noncore/applets/config.in
endmenu
menu "Apps"
source core/apps/config.in
source noncore/apps/config.in
endmenu
menu "Communications and Networking"
source noncore/comm/config.in
source noncore/net/config.in
endmenu
menu "Games"
source noncore/games/config.in
endmenu
menu "Graphics and Multimedia"
source freetype/config.in
source noncore/graphics/config.in
source core/multimedia/config.in
source noncore/multimedia/config.in
endmenu
menu "Input methods"
source inputmethods/config.in
endmenu
menu "Pim"
source core/obex/config.in
source core/pim/config.in
comment "Today Plugins ---"
source noncore/todayplugins/config.in
source core/pim/today/plugins/config.in
endmenu
menu "Settings"
source core/settings/config.in
source noncore/settings/config.in
source noncore/securityplugins/config.in
endmenu
menu "Theming"
comment "Decorations ---"
source noncore/decorations/config.in
comment "Styles ---"
source noncore/styles/config.in
endmenu
menu "Tools"
source noncore/tools/config.in
endmenu
menu "Development"
source development/keyview/config.in
#source development/debugviewer/config.in
endmenu
menu "Examples"
config EXAMPLES
boolean "Compile Example Application"
source examples/config.in
endmenu
comment ""
menu "Unsupported / Unmaintained"
source noncore/unsupported/config.in
endmenu
comment ""
depends on EXPERIMENTAL
menu "Experimental"
depends on EXPERIMENTAL
source libslcompat/config.in
source core/qws/config.in
endmenu
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 26e310a..4bc0c5f 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1,2293 +1,2288 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
*/
#define QTOPIA_INTERNAL_LANGLIST
#include <stdlib.h>
#include <unistd.h>
#ifndef Q_OS_MACX
#include <linux/limits.h> // needed for some toolchains (PATH_MAX)
#endif
#include <qfile.h>
#include <qqueue.h>
#ifdef Q_WS_QWS
#ifndef QT_NO_COP
#if QT_VERSION <= 231
#define private public
#define sendLocally processEvent
#include "qcopenvelope_qws.h"
#undef private
#else
#include "qcopenvelope_qws.h"
#endif
#endif
#include <qwindowsystem_qws.h>
#endif
#include <qtextstream.h>
#include <qpalette.h>
#include <qbuffer.h>
#include <qptrdict.h>
#include <qregexp.h>
#include <qdir.h>
#include <qlabel.h>
#include <qdialog.h>
#include <qdragobject.h>
#include <qtextcodec.h>
#include <qevent.h>
#include <qtooltip.h>
#include <qsignal.h>
#include <qmainwindow.h>
#include <qwidgetlist.h>
#include <qpixmapcache.h>
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
#define QTOPIA_INTERNAL_INITAPP
#include "qpeapplication.h"
#include "qpestyle.h"
#include "styleinterface.h"
#if QT_VERSION >= 300
#include <qstylefactory.h>
#else
#include <qplatinumstyle.h>
#include <qwindowsstyle.h>
#include <qmotifstyle.h>
#include <qmotifplusstyle.h>
#include "lightstyle.h"
#include <qpe/qlibrary.h>
#endif
#include "global.h"
#include "resource.h"
#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
#include "qutfcodec.h"
#endif
#include "config.h"
#include "network.h"
#ifdef QWS
#include "fontmanager.h"
#endif
#include "alarmserver.h"
#include "applnk.h"
#include "qpemenubar.h"
#include "textcodecinterface.h"
#include "imagecodecinterface.h"
#include <unistd.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#ifndef QT_NO_SOUND
#include <sys/soundcard.h>
#endif
#include "qt_override_p.h"
+static bool useBigPixmaps = 0;
+
class HackWidget : public QWidget
{
public:
bool needsOk()
{ return (getWState() & WState_Reserved1 ); }
QRect normalGeometry()
{ return topData()->normalGeometry; };
};
class QPEApplicationData
{
public:
- QPEApplicationData ( )
- : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
- notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
- keep_running( true ), qcopQok( false ), qpe_main_widget( 0 )
-
- {}
+ QPEApplicationData ( )
+ : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
+ notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
+ keep_running( true ), qcopQok( false ),
+ fontFamily( "Vera" ), fontSize( 10 ), smallIconSize( 14 ),
+ bigIconSize( 32 ), qpe_main_widget( 0 )
+ {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Appearance" );
+ useBigPixmaps = cfg.readBoolEntry( "useBigPixmaps", false );
+ fontFamily = cfg.readEntry( "FontFamily", "Vera" );
+ fontSize = cfg.readNumEntry( "FontSize", 10 );
+ smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 );
+ bigIconSize = cfg.readNumEntry( "BigIconSize", 32 );
+ }
- int presstimer;
- QWidget* presswidget;
- QPoint presspos;
+ int presstimer;
+ QWidget* presswidget;
+ QPoint presspos;
- bool rightpressed : 1;
- bool kbgrabbed : 1;
- bool notbusysent : 1;
- bool preloaded : 1;
- bool forceshow : 1;
- bool nomaximize : 1;
- bool keep_running : 1;
- bool qcopQok : 1;
+ bool rightpressed : 1;
+ bool kbgrabbed : 1;
+ bool notbusysent : 1;
+ bool preloaded : 1;
+ bool forceshow : 1;
+ bool nomaximize : 1;
+ bool keep_running : 1;
+ bool qcopQok : 1;
+ QCString fontFamily;
+ int fontSize;
+ int smallIconSize;
+ int bigIconSize;
QStringList langs;
- QString appName;
- struct QCopRec
- {
- QCopRec( const QCString &ch, const QCString &msg,
- const QByteArray &d ) :
- channel( ch ), message( msg ), data( d )
- { }
-
- QCString channel;
- QCString message;
- QByteArray data;
- };
- QWidget* qpe_main_widget;
+ QString appName;
+ struct QCopRec
+ {
+ QCopRec( const QCString &ch, const QCString &msg,
+ const QByteArray &d ) :
+ channel( ch ), message( msg ), data( d )
+ { }
+
+ QCString channel;
+ QCString message;
+ QByteArray data;
+ };
+ QWidget* qpe_main_widget;
QGuardedPtr<QWidget> lastraised;
- QQueue<QCopRec> qcopq;
+ QQueue<QCopRec> qcopq;
QString styleName;
- QString decorationName;
-
- void enqueueQCop( const QCString &ch, const QCString &msg,
- const QByteArray &data )
- {
- qcopq.enqueue( new QCopRec( ch, msg, data ) );
- }
- void sendQCopQ()
- {
+ QString decorationName;
+
+ void enqueueQCop( const QCString &ch, const QCString &msg,
+ const QByteArray &data )
+ {
+ qcopq.enqueue( new QCopRec( ch, msg, data ) );
+ }
+ void sendQCopQ()
+ {
if (!qcopQok )
return;
- QCopRec * r;
+ QCopRec * r;
while((r=qcopq.dequeue())) {
// remove from queue before sending...
// event loop can come around again before getting
// back from sendLocally
#ifndef QT_NO_COP
QCopChannel::sendLocally( r->channel, r->message, r->data );
#endif
- delete r;
+ delete r;
}
- }
-
- static void show_mx(QWidget* mw, bool nomaximize, QString &strName/* = QString::null */)
- {
- // ugly hack, remove that later after finding a sane solution
- // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
- // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has
- // a (physically) large enough display to use the small icons
-#if defined(OPIE_HIGH_RES_SMALL_PHY)
- if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
- ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
+ }
+
+ static void show_mx(QWidget* mw, bool nomaximize, QString &strName)
+ {
+ if ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") )
+ {
+ ( ( QMainWindow* ) mw )->setUsesBigPixmaps( useBigPixmaps );
}
-#endif
+ QPoint p;
+ QSize s;
+ bool max;
+ if ( mw->isVisible() ) {
+ if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
+ mw->resize(s);
+ mw->move(p);
+ }
+ mw->raise();
+ } else {
- QPoint p;
- QSize s;
- bool max;
- if ( mw->isVisible() ) {
- if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
- mw->resize(s);
- mw->move(p);
- }
- mw->raise();
- } else {
-
- if ( mw->layout() && mw->inherits("QDialog") ) {
- if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
- mw->resize(s);
- mw->move(p);
-
- if ( max && !nomaximize ) {
- mw->showMaximized();
- } else {
- mw->show();
- }
- } else {
- qpe_show_dialog((QDialog*)mw,nomaximize);
- }
- } else {
- if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
- mw->resize(s);
- mw->move(p);
- } else { //no stored rectangle, make an estimation
- int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2;
- int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2;
- mw->move( QMAX(x,0), QMAX(y,0) );
+ if ( mw->layout() && mw->inherits("QDialog") ) {
+ if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
+ mw->resize(s);
+ mw->move(p);
+
+ if ( max && !nomaximize ) {
+ mw->showMaximized();
+ } else {
+ mw->show();
+ }
+ } else {
+ qpe_show_dialog((QDialog*)mw,nomaximize);
+ }
+ } else {
+ if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
+ mw->resize(s);
+ mw->move(p);
+ } else { //no stored rectangle, make an estimation
+ int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2;
+ int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2;
+ mw->move( QMAX(x,0), QMAX(y,0) );
#ifdef Q_WS_QWS
- if ( !nomaximize )
- mw->showMaximized();
+ if ( !nomaximize )
+ mw->showMaximized();
#endif
- }
- if ( max && !nomaximize )
- mw->showMaximized();
- else
- mw->show();
- }
- }
- }
+ }
+ if ( max && !nomaximize )
+ mw->showMaximized();
+ else
+ mw->show();
+ }
+ }
+ }
static void qpe_show_dialog( QDialog* d, bool nomax )
{
QSize sh = d->sizeHint();
int w = QMAX(sh.width(),d->width());
int h = QMAX(sh.height(),d->height());
if ( d->parentWidget() && !d->parentWidget()->topLevelWidget()->isMaximized() )
- nomax = TRUE;
+ nomax = TRUE;
#ifndef Q_WS_QWS
- QSize s(qApp->desktop()->width(), qApp->desktop()->height() );
+ QSize s(qApp->desktop()->width(), qApp->desktop()->height() );
#else
- QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() );
+ QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() );
#endif
int maxX = s.width() - (d->frameGeometry().width() - d->geometry().width());
int maxY = s.height() - (d->frameGeometry().height() - d->geometry().height());
if ( (w >= maxX && h >= maxY) || ( (!nomax) && ( w > s.width()*3/4 || h > s.height()*3/4 ) ) ) {
- d->showMaximized();
+ d->showMaximized();
+ } else {
+ // try centering the dialog around its parent
+ QPoint p(0,0);
+ if ( d->parentWidget() ) {
+ QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) );
+ p = QPoint( pp.x() + d->parentWidget()->width()/2,
+ pp.y() + d->parentWidget()->height()/ 2 );
} else {
- // try centering the dialog around its parent
- QPoint p(0,0);
- if ( d->parentWidget() ) {
- QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) );
- p = QPoint( pp.x() + d->parentWidget()->width()/2,
- pp.y() + d->parentWidget()->height()/ 2 );
- } else {
- p = QPoint( maxX/2, maxY/2 );
- }
-
- p = QPoint( p.x() - w/2, p.y() - h/2 );
-// qDebug("p(x,y) is %d %d", p.x(), p.y() );
-
- if ( w >= maxX ) {
- if ( p.y() < 0 )
- p.setY(0);
- if ( p.y() + h > maxY )
- p.setY( maxY - h);
-
- d->resize(maxX, h);
- d->move(0, p.y() );
- } else if ( h >= maxY ) {
- if ( p.x() < 0 )
- p.setX(0);
- if ( p.x() + w > maxX )
- p.setX( maxX - w);
-
- d->resize(w, maxY);
- d->move(p.x(),0);
- } else {
- d->resize(w, h);
- }
-
- d->show();
+ p = QPoint( maxX/2, maxY/2 );
+ }
+
+ p = QPoint( p.x() - w/2, p.y() - h/2 );
+// qDebug("p(x,y) is %d %d", p.x(), p.y() );
+
+ if ( w >= maxX ) {
+ if ( p.y() < 0 )
+ p.setY(0);
+ if ( p.y() + h > maxY )
+ p.setY( maxY - h);
+
+ d->resize(maxX, h);
+ d->move(0, p.y() );
+ } else if ( h >= maxY ) {
+ if ( p.x() < 0 )
+ p.setX(0);
+ if ( p.x() + w > maxX )
+ p.setX( maxX - w);
+
+ d->resize(w, maxY);
+ d->move(p.x(),0);
+ } else {
+ d->resize(w, h);
+ }
+
+ d->show();
}
}
static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s)
{
- maximized = TRUE;
- // 350 is the trigger in qwsdefaultdecoration for providing a resize button
- if ( qApp->desktop()->width() <= 350 )
- return FALSE;
+ maximized = TRUE;
+ // 350 is the trigger in qwsdefaultdecoration for providing a resize button
+ if ( qApp->desktop()->width() <= 350 )
+ return FALSE;
- Config cfg( "qpe" );
- cfg.setGroup("ApplicationPositions");
- QString str = cfg.readEntry( app, QString::null );
- QStringList l = QStringList::split(",", str);
+ Config cfg( "qpe" );
+ cfg.setGroup("ApplicationPositions");
+ QString str = cfg.readEntry( app, QString::null );
+ QStringList l = QStringList::split(",", str);
- if ( l.count() == 5) {
- p.setX( l[0].toInt() );
- p.setY( l[1].toInt() );
+ if ( l.count() == 5) {
+ p.setX( l[0].toInt() );
+ p.setY( l[1].toInt() );
- s.setWidth( l[2].toInt() );
- s.setHeight( l[3].toInt() );
+ s.setWidth( l[2].toInt() );
+ s.setHeight( l[3].toInt() );
- maximized = l[4].toInt();
+ maximized = l[4].toInt();
- return TRUE;
- }
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
- static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s)
+ static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s)
{
#ifndef Q_WS_QWS
- QRect qt_maxWindowRect = qApp->desktop()->geometry();
+ QRect qt_maxWindowRect = qApp->desktop()->geometry();
#endif
- int maxX = qt_maxWindowRect.width();
- int maxY = qt_maxWindowRect.height();
- int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() );
- int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() );
+ int maxX = qt_maxWindowRect.width();
+ int maxY = qt_maxWindowRect.height();
+ int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() );
+ int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() );
+
+ // total window size is not allowed to be larger than desktop window size
+ if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) )
+ return FALSE;
+
+ if ( wWidth > maxX ) {
+ s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) );
+ wWidth = maxX;
+ }
- // total window size is not allowed to be larger than desktop window size
- if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) )
- return FALSE;
+ if ( wHeight > maxY ) {
+ s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) );
+ wHeight = maxY;
+ }
- if ( wWidth > maxX ) {
- s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) );
- wWidth = maxX;
- }
+ // any smaller than this and the maximize/close/help buttons will be overlapping
+ if ( wWidth < 80 || wHeight < 60 )
+ return FALSE;
- if ( wHeight > maxY ) {
- s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) );
- wHeight = maxY;
- }
+ if ( p.x() < 0 )
+ p.setX(0);
+ if ( p.y() < 0 )
+ p.setY(0);
- // any smaller than this and the maximize/close/help buttons will be overlapping
- if ( wWidth < 80 || wHeight < 60 )
- return FALSE;
+ if ( p.x() + wWidth > maxX )
+ p.setX( maxX - wWidth );
+ if ( p.y() + wHeight > maxY )
+ p.setY( maxY - wHeight );
- if ( p.x() < 0 )
- p.setX(0);
- if ( p.y() < 0 )
- p.setY(0);
+ return TRUE;
+ }
- if ( p.x() + wWidth > maxX )
- p.setX( maxX - wWidth );
- if ( p.y() + wHeight > maxY )
- p.setY( maxY - wHeight );
+ static void store_widget_rect(QWidget *w, QString &app)
+ {
+ // 350 is the trigger in qwsdefaultdecoration for providing a resize button
+ if ( qApp->desktop()->width() <= 350 )
+ return;
+ // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to
+ // get the non-maximized version, so we have to do it the hard way )
+ int offsetX = w->x() - w->geometry().left();
+ int offsetY = w->y() - w->geometry().top();
+
+ QRect r;
+ if ( w->isMaximized() )
+ r = ( (HackWidget *) w)->normalGeometry();
+ else
+ r = w->geometry();
+
+ // Stores the window placement as pos(), size() (due to the offset mapping)
+ Config cfg( "qpe" );
+ cfg.setGroup("ApplicationPositions");
+ QString s;
+ s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
+ cfg.writeEntry( app, s );
+ }
- return TRUE;
+ static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
+ {
+ /*
+ // This works but disable it for now until it is safe to apply
+ // What is does is scan the .desktop files of all the apps for
+ // the applnk that has the corresponding argv[0] as this program
+ // then it uses the name stored in the .desktop file as the caption
+ // for the main widget. This saves duplicating translations for
+ // the app name in the program and in the .desktop files.
+
+ AppLnkSet apps( appsPath );
+
+ QList<AppLnk> appsList = apps.children();
+ for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
+ if ( (*it)->exec() == appName ) {
+ mw->setCaption( (*it)->name() );
+ return TRUE;
+ }
+ }
+ */
+ return FALSE;
}
- static void store_widget_rect(QWidget *w, QString &app)
+
+ void show(QWidget* mw, bool nomax)
{
- // 350 is the trigger in qwsdefaultdecoration for providing a resize button
- if ( qApp->desktop()->width() <= 350 )
- return;
- // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to
- // get the non-maximized version, so we have to do it the hard way )
- int offsetX = w->x() - w->geometry().left();
- int offsetY = w->y() - w->geometry().top();
-
- QRect r;
- if ( w->isMaximized() )
- r = ( (HackWidget *) w)->normalGeometry();
- else
- r = w->geometry();
-
- // Stores the window placement as pos(), size() (due to the offset mapping)
- Config cfg( "qpe" );
- cfg.setGroup("ApplicationPositions");
- QString s;
- s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
- cfg.writeEntry( app, s );
- }
-
- static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
- {
- /*
- // This works but disable it for now until it is safe to apply
- // What is does is scan the .desktop files of all the apps for
- // the applnk that has the corresponding argv[0] as this program
- // then it uses the name stored in the .desktop file as the caption
- // for the main widget. This saves duplicating translations for
- // the app name in the program and in the .desktop files.
-
- AppLnkSet apps( appsPath );
-
- QList<AppLnk> appsList = apps.children();
- for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
- if ( (*it)->exec() == appName ) {
- mw->setCaption( (*it)->name() );
- return TRUE;
- }
- }
- */
- return FALSE;
- }
-
-
- void show(QWidget* mw, bool nomax)
- {
- setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
- nomaximize = nomax;
- qpe_main_widget = mw;
+ setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
+ nomaximize = nomax;
+ qpe_main_widget = mw;
qcopQok = TRUE;
#ifndef QT_NO_COP
- sendQCopQ();
+ sendQCopQ();
#endif
- if ( preloaded ) {
- if (forceshow)
- show_mx(mw, nomax, appName);
- }
- else if ( keep_running ) {
- show_mx(mw, nomax, appName);
- }
- }
-
- void loadTextCodecs()
- {
- QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
+ if ( preloaded ) {
+ if (forceshow)
+ show_mx(mw, nomax, appName);
+ }
+ else if ( keep_running ) {
+ show_mx(mw, nomax, appName);
+ }
+ }
+
+ void loadTextCodecs()
+ {
+ QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
#ifdef Q_OS_MACX
- QDir dir( path, "lib*.dylib" );
+ QDir dir( path, "lib*.dylib" );
#else
- QDir dir( path, "lib*.so" );
+ QDir dir( path, "lib*.so" );
#endif
- QStringList list;
- if ( dir. exists ( ))
- list = dir.entryList();
- QStringList::Iterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- TextCodecInterface *iface = 0;
- QLibrary *lib = new QLibrary( path + "/" + *it );
- if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
- QValueList<int> mibs = iface->mibEnums();
- for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
- (void)iface->createForMib(*i);
- // ### it exists now; need to remember if we can delete it
- }
- }
- else {
- lib->unload();
- delete lib;
- }
- }
- }
-
- void loadImageCodecs()
- {
- QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs";
+ QStringList list;
+ if ( dir. exists ( ))
+ list = dir.entryList();
+ QStringList::Iterator it;
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ TextCodecInterface *iface = 0;
+ QLibrary *lib = new QLibrary( path + "/" + *it );
+ if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
+ QValueList<int> mibs = iface->mibEnums();
+ for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
+ (void)iface->createForMib(*i);
+ // ### it exists now; need to remember if we can delete it
+ }
+ }
+ else {
+ lib->unload();
+ delete lib;
+ }
+ }
+ }
+
+ void loadImageCodecs()
+ {
+ QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs";
#ifdef Q_OS_MACX
- QDir dir( path, "lib*.dylib" );
+ QDir dir( path, "lib*.dylib" );
#else
- QDir dir( path, "lib*.so" );
+ QDir dir( path, "lib*.so" );
#endif
- QStringList list;
- if ( dir. exists ( ))
- list = dir.entryList();
- QStringList::Iterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- ImageCodecInterface *iface = 0;
- QLibrary *lib = new QLibrary( path + "/" + *it );
- if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
- QStringList formats = iface->keys();
- for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) {
- (void)iface->installIOHandler(*i);
- // ### it exists now; need to remember if we can delete it
- }
- }
- else {
- lib->unload();
- delete lib;
- }
- }
- }
+ QStringList list;
+ if ( dir. exists ( ))
+ list = dir.entryList();
+ QStringList::Iterator it;
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ ImageCodecInterface *iface = 0;
+ QLibrary *lib = new QLibrary( path + "/" + *it );
+ if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
+ QStringList formats = iface->keys();
+ for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) {
+ (void)iface->installIOHandler(*i);
+ // ### it exists now; need to remember if we can delete it
+ }
+ }
+ else {
+ lib->unload();
+ delete lib;
+ }
+ }
+ }
};
class ResourceMimeFactory : public QMimeSourceFactory
{
public:
ResourceMimeFactory() : resImage( 0 )
- {
- setFilePath( Global::helpPath() );
- setExtensionType( "html", "text/html;charset=UTF-8" );
- }
+ {
+ setFilePath( Global::helpPath() );
+ setExtensionType( "html", "text/html;charset=UTF-8" );
+ }
~ResourceMimeFactory() {
delete resImage;
}
- const QMimeSource* data( const QString& abs_name ) const
- {
- const QMimeSource * r = QMimeSourceFactory::data( abs_name );
- if ( !r ) {
- int sl = abs_name.length();
- do {
- sl = abs_name.findRev( '/', sl - 1 );
- QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name;
- int dot = name.findRev( '.' );
- if ( dot >= 0 )
- name = name.left( dot );
- QImage img = Resource::loadImage( name );
- if ( !img.isNull() ) {
+ const QMimeSource* data( const QString& abs_name ) const
+ {
+ const QMimeSource * r = QMimeSourceFactory::data( abs_name );
+ if ( !r ) {
+ int sl = abs_name.length();
+ do {
+ sl = abs_name.findRev( '/', sl - 1 );
+ QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name;
+ int dot = name.findRev( '.' );
+ if ( dot >= 0 )
+ name = name.left( dot );
+ QImage img = Resource::loadImage( name );
+ if ( !img.isNull() ) {
delete resImage;
resImage = new QImageDrag( img );
r = resImage;
}
- }
- while ( !r && sl > 0 );
- }
- return r;
- }
+ }
+ while ( !r && sl > 0 );
+ }
+ return r;
+ }
private:
mutable QImageDrag *resImage;
};
static int& hack(int& i)
{
#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
// These should be created, but aren't in Qt 2.3.0
(void)new QUtf8Codec;
(void)new QUtf16Codec;
#endif
return i;
}
static int muted = 0;
static int micMuted = 0;
static void setVolume( int t = 0, int percent = -1 )
{
- switch ( t ) {
- case 0: {
- Config cfg( "qpe" );
- cfg.setGroup( "Volume" );
- if ( percent < 0 )
- percent = cfg.readNumEntry( "VolumePercent", 50 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "VolumePercent", 50 );
#ifndef QT_NO_SOUND
- int fd = 0;
- if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- int vol = muted ? 0 : percent;
- // set both channels to same volume
- vol |= vol << 8;
- ioctl( fd, MIXER_WRITE( SOUND_MIXER_VOLUME ), &vol );
- ::close( fd );
- }
+ int fd = 0;
+ if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
+ int vol = muted ? 0 : percent;
+ // set both channels to same volume
+ vol |= vol << 8;
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_VOLUME ), &vol );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
static void setMic( int t = 0, int percent = -1 )
{
- switch ( t ) {
- case 0: {
- Config cfg( "qpe" );
- cfg.setGroup( "Volume" );
- if ( percent < 0 )
- percent = cfg.readNumEntry( "Mic", 50 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "Mic", 50 );
#ifndef QT_NO_SOUND
- int fd = 0;
- int mic = micMuted ? 0 : percent;
- if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic );
- ::close( fd );
- }
+ int fd = 0;
+ int mic = micMuted ? 0 : percent;
+ if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
static void setBass( int t = 0, int percent = -1 )
{
- switch ( t ) {
- case 0: {
- Config cfg( "qpe" );
- cfg.setGroup( "Volume" );
- if ( percent < 0 )
- percent = cfg.readNumEntry( "BassPercent", 50 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "BassPercent", 50 );
#ifndef QT_NO_SOUND
- int fd = 0;
- int bass = percent;
+ int fd = 0;
+ int bass = percent;
if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
- ::close( fd );
- }
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
static void setTreble( int t = 0, int percent = -1 )
{
- switch ( t ) {
- case 0: {
- Config cfg( "qpe" );
- cfg.setGroup( "Volume" );
- if ( percent < 0 )
- percent = cfg.readNumEntry( "TreblePercent", 50 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "TreblePercent", 50 );
#ifndef QT_NO_SOUND
- int fd = 0;
- int treble = percent;
- if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
- ::close( fd );
- }
+ int fd = 0;
+ int treble = percent;
+ if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
/**
\class QPEApplication
\brief The QPEApplication class implements various system services
that are available to all Qtopia applications.
Simply by using QPEApplication instead of QApplication, a standard Qt
application becomes a Qtopia application. It automatically follows
style changes, quits and raises, and in the
case of \link docwidget.html document-oriented\endlink applications,
changes the currently displayed document in response to the environment.
To create a \link docwidget.html document-oriented\endlink
application use showMainDocumentWidget(); to create a
non-document-oriented application use showMainWidget(). The
keepRunning() function indicates whether the application will
continue running after it's processed the last \link qcop.html
QCop\endlink message. This can be changed using setKeepRunning().
A variety of signals are emitted when certain events occur, for
example, timeChanged(), clockChanged(), weekChanged(),
dateFormatChanged() and volumeChanged(). If the application receives
a \link qcop.html QCop\endlink message on the application's
QPE/Application/\e{appname} channel, the appMessage() signal is
emitted. There are also flush() and reload() signals, which
are emitted when synching begins and ends respectively - upon these
signals, the application should save and reload any data
files that are involved in synching. Most of these signals will initially
be received and unfiltered through the appMessage() signal.
This class also provides a set of useful static functions. The
qpeDir() and documentDir() functions return the respective paths.
The grabKeyboard() and ungrabKeyboard() functions are used to
control whether the application takes control of the device's
physical buttons (e.g. application launch keys). The stylus' mode of
operation is set with setStylusOperation() and retrieved with
stylusOperation(). There are also setInputMethodHint() and
inputMethodHint() functions.
\ingroup qtopiaemb
*/
/*!
\fn void QPEApplication::clientMoused()
\internal
*/
/*!
\fn void QPEApplication::timeChanged();
This signal is emitted when the time changes outside the normal
passage of time, i.e. if the time is set backwards or forwards.
*/
/*!
\fn void QPEApplication::clockChanged( bool ampm );
This signal is emitted when the user changes the clock's style. If
\a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise,
they want a 24-hour clock.
*/
/*!
\fn void QPEApplication::volumeChanged( bool muted )
This signal is emitted whenever the mute state is changed. If \a
muted is TRUE, then sound output has been muted.
*/
/*!
\fn void QPEApplication::weekChanged( bool startOnMonday )
This signal is emitted if the week start day is changed. If \a
startOnMonday is TRUE then the first day of the week is Monday; if
\a startOnMonday is FALSE then the first day of the week is
Sunday.
*/
/*!
\fn void QPEApplication::dateFormatChanged(DateFormat)
This signal is emitted whenever the date format is changed.
*/
/*!
\fn void QPEApplication::flush()
###
*/
/*!
\fn void QPEApplication::reload()
*/
void QPEApplication::processQCopFile()
{
QString qcopfn("/tmp/qcop-msg-");
qcopfn += d->appName; // append command name
QFile f(qcopfn);
if ( f.open(IO_ReadWrite) ) {
#ifndef Q_OS_WIN32
- flock(f.handle(), LOCK_EX);
+ flock(f.handle(), LOCK_EX);
#endif
- QDataStream ds(&f);
- QCString channel, message;
- QByteArray data;
- while(!ds.atEnd()) {
- ds >> channel >> message >> data;
- d->enqueueQCop(channel,message,data);
- }
- ::ftruncate(f.handle(), 0);
+ QDataStream ds(&f);
+ QCString channel, message;
+ QByteArray data;
+ while(!ds.atEnd()) {
+ ds >> channel >> message >> data;
+ d->enqueueQCop(channel,message,data);
+ }
+ ::ftruncate(f.handle(), 0);
#ifndef Q_OS_WIN32
- f.flush();
- flock(f.handle(), LOCK_UN);
+ f.flush();
+ flock(f.handle(), LOCK_UN);
#endif
}
#endif
}
/*!
\fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
This signal is emitted when a message is received on this
application's QPE/Application/<i>appname</i> \link qcop.html
QCop\endlink channel.
The slot to which you connect this signal uses \a msg and \a data
in the following way:
\code
void MyWidget::receive( const QCString& msg, const QByteArray& data )
{
QDataStream stream( data, IO_ReadOnly );
if ( msg == "someMessage(int,int,int)" ) {
int a,b,c;
stream >> a >> b >> c;
...
} else if ( msg == "otherMessage(QString)" ) {
...
}
}
\endcode
\sa qcop.html
Note that messages received here may be processed by qpe application
and emitted as signals, such as flush() and reload().
*/
/*!
Constructs a QPEApplication just as you would construct
a QApplication, passing \a argc, \a argv, and \a t.
For applications, \a t should be the default, GuiClient. Only
the Qtopia server passes GuiServer.
*/
QPEApplication::QPEApplication( int & argc, char **argv, Type t )
- : QApplication( hack(argc), argv, t ), pidChannel( 0 )
+ : QApplication( hack(argc), argv, t ), pidChannel( 0 )
{
- QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
-
- d = new QPEApplicationData;
- d->loadTextCodecs();
- d->loadImageCodecs();
- int dw = desktop() ->width();
-
- if ( dw < 200 ) {
- setFont( QFont( "vera", 8 ) );
- AppLnk::setSmallIconSize( 10 );
- AppLnk::setBigIconSize( 28 );
- }
-#if defined(OPIE_HIGH_RES_SMALL_PHY)
- else if ( dw > 600 ) {
- setFont( QFont( "vera", 16 ) );
- AppLnk::setSmallIconSize( 24 );
- AppLnk::setBigIconSize( 48 );
- }
-#endif
- else if ( dw > 200 ) {
- setFont( QFont( "vera", 10 ) );
- AppLnk::setSmallIconSize( 14 );
- AppLnk::setBigIconSize( 32 );
- }
+ QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
+
+ d = new QPEApplicationData;
+ d->loadTextCodecs();
+ d->loadImageCodecs();
+ int dw = desktop() ->width();
+
+ setFont( QFont( d->fontFamily, d->fontSize ) );
+ AppLnk::setSmallIconSize( d->smallIconSize );
+ AppLnk::setBigIconSize( d->bigIconSize );
- QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
+ QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
- connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
+ connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
- sysChannel = new QCopChannel( "QPE/System", this );
- connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
- this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
+ sysChannel = new QCopChannel( "QPE/System", this );
+ connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
+ this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
/* COde now in initapp */
#if 0
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
- QString qcopfn( "/tmp/qcop-msg-" );
- qcopfn += QString( argv[ 0 ] ); // append command name
-
- QFile f( qcopfn );
- if ( f.open( IO_ReadOnly ) ) {
- flock( f.handle(), LOCK_EX );
- }
-
-
-
- QCString channel = QCString( argv[ 0 ] );
- channel.replace( QRegExp( ".*/" ), "" );
- d->appName = channel;
- channel = "QPE/Application/" + channel;
- pidChannel = new QCopChannel( channel, this );
- connect( pidChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
- this, SLOT( pidMessage(const QCString&,const QByteArray&) ) );
-
- if ( f.isOpen() ) {
- d->keep_running = FALSE;
- QDataStream ds( &f );
- QCString channel, message;
- QByteArray data;
- while ( !ds.atEnd() ) {
- ds >> channel >> message >> data;
- d->enqueueQCop( channel, message, data );
- }
-
- flock( f.handle(), LOCK_UN );
- f.close();
- f.remove();
- }
-
- for ( int a = 0; a < argc; a++ ) {
- if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
- argv[ a ] = argv[ a + 1 ];
- a++;
- d->preloaded = TRUE;
- argc -= 1;
- }
- else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
- argv[ a ] = argv[ a + 1 ];
- a++;
- d->preloaded = TRUE;
- d->forceshow = TRUE;
- argc -= 1;
- }
- }
-
- /* overide stored arguments */
- setArgs( argc, argv );
+ QString qcopfn( "/tmp/qcop-msg-" );
+ qcopfn += QString( argv[ 0 ] ); // append command name
+
+ QFile f( qcopfn );
+ if ( f.open( IO_ReadOnly ) ) {
+ flock( f.handle(), LOCK_EX );
+ }
+
+
+
+ QCString channel = QCString( argv[ 0 ] );
+ channel.replace( QRegExp( ".*/" ), "" );
+ d->appName = channel;
+ channel = "QPE/Application/" + channel;
+ pidChannel = new QCopChannel( channel, this );
+ connect( pidChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
+ this, SLOT( pidMessage(const QCString&,const QByteArray&) ) );
+
+ if ( f.isOpen() ) {
+ d->keep_running = FALSE;
+ QDataStream ds( &f );
+ QCString channel, message;
+ QByteArray data;
+ while ( !ds.atEnd() ) {
+ ds >> channel >> message >> data;
+ d->enqueueQCop( channel, message, data );
+ }
+
+ flock( f.handle(), LOCK_UN );
+ f.close();
+ f.remove();
+ }
+
+ for ( int a = 0; a < argc; a++ ) {
+ if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
+ argv[ a ] = argv[ a + 1 ];
+ a++;
+ d->preloaded = TRUE;
+ argc -= 1;
+ }
+ else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
+ argv[ a ] = argv[ a + 1 ];
+ a++;
+ d->preloaded = TRUE;
+ d->forceshow = TRUE;
+ argc -= 1;
+ }
+ }
+
+ /* overide stored arguments */
+ setArgs( argc, argv );
#endif
#else
initApp( argc, argv );
#endif
- // qwsSetDecoration( new QPEDecoration() );
+ // qwsSetDecoration( new QPEDecoration() );
#ifndef QT_NO_TRANSLATION
- d->langs = Global::languageList();
- for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
- QString lang = *it;
+ d->langs = Global::languageList();
+ for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
+ QString lang = *it;
installTranslation( lang + "/libopie.qm");
- installTranslation( lang + "/libqpe.qm" );
- installTranslation( lang + "/" + d->appName + ".qm" );
+ installTranslation( lang + "/libqpe.qm" );
+ installTranslation( lang + "/" + d->appName + ".qm" );
- //###language/font hack; should look it up somewhere
+ //###language/font hack; should look it up somewhere
#ifdef QWS
if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
QFont fn = FontManager::unicodeFont( FontManager::Proportional );
setFont( fn );
}
#endif
}
#endif
- applyStyle();
+ applyStyle();
- if ( type() == GuiServer ) {
- setVolume();
- }
+ if ( type() == GuiServer ) {
+ setVolume();
+ }
- installEventFilter( this );
+ installEventFilter( this );
- QPEMenuToolFocusManager::initialize();
+ QPEMenuToolFocusManager::initialize();
#ifdef QT_NO_QWS_CURSOR
- // if we have no cursor, probably don't want tooltips
- QToolTip::setEnabled( FALSE );
+ // if we have no cursor, probably don't want tooltips
+ QToolTip::setEnabled( FALSE );
#endif
}
#ifdef QTOPIA_INTERNAL_INITAPP
void QPEApplication::initApp( int argc, char **argv )
{
delete pidChannel;
d->keep_running = TRUE;
d->preloaded = FALSE;
d->forceshow = FALSE;
QCString channel = QCString(argv[0]);
channel.replace(QRegExp(".*/"),"");
d->appName = channel;
#if QT_VERSION > 235
qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6
#endif
channel = "QPE/Application/" + channel;
pidChannel = new QCopChannel( channel, this);
connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)),
- this, SLOT(pidMessage(const QCString&,const QByteArray&)));
+ this, SLOT(pidMessage(const QCString&,const QByteArray&)));
processQCopFile();
d->keep_running = d->qcopq.isEmpty();
for (int a=0; a<argc; a++) {
- if ( qstrcmp(argv[a],"-preload")==0 ) {
- argv[a] = argv[a+1];
- a++;
- d->preloaded = TRUE;
- argc-=1;
- } else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
- argv[a] = argv[a+1];
- a++;
- d->preloaded = TRUE;
- d->forceshow = TRUE;
- argc-=1;
- }
+ if ( qstrcmp(argv[a],"-preload")==0 ) {
+ argv[a] = argv[a+1];
+ a++;
+ d->preloaded = TRUE;
+ argc-=1;
+ } else if ( qstrcmp(argv[a],"-preload-show")==0 ) {
+ argv[a] = argv[a+1];
+ a++;
+ d->preloaded = TRUE;
+ d->forceshow = TRUE;
+ argc-=1;
+ }
}
/* overide stored arguments */
setArgs(argc, argv);
/* install translation here */
for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it )
installTranslation( (*it) + "/" + d->appName + ".qm" );
}
#endif
static QPtrDict<void>* inputMethodDict = 0;
static void createInputMethodDict()
{
- if ( !inputMethodDict )
- inputMethodDict = new QPtrDict<void>;
+ if ( !inputMethodDict )
+ inputMethodDict = new QPtrDict<void>;
}
/*!
Returns the currently set hint to the system as to whether
widget \a w has any use for text input methods.
\sa setInputMethodHint() InputMethodHint
*/
QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
{
- if ( inputMethodDict && w )
- return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
- return Normal;
+ if ( inputMethodDict && w )
+ return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
+ return Normal;
}
/*!
\enum QPEApplication::InputMethodHint
\value Normal the application sometimes needs text input (the default).
\value AlwaysOff the application never needs text input.
\value AlwaysOn the application always needs text input.
*/
/*!
Hints to the system that widget \a w has use for text input methods
as specified by \a mode.
\sa inputMethodHint() InputMethodHint
*/
void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
{
- createInputMethodDict();
- if ( mode == Normal ) {
- inputMethodDict->remove
- ( w );
- }
- else {
- inputMethodDict->insert( w, ( void* ) mode );
- }
+ createInputMethodDict();
+ if ( mode == Normal ) {
+ inputMethodDict->remove
+ ( w );
+ }
+ else {
+ inputMethodDict->insert( w, ( void* ) mode );
+ }
}
class HackDialog : public QDialog
{
public:
- void acceptIt()
- {
- accept();
- }
- void rejectIt()
- {
- reject();
- }
+ void acceptIt()
+ {
+ accept();
+ }
+ void rejectIt()
+ {
+ reject();
+ }
};
void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
{
- // specialised actions for certain widgets. May want to
- // add more stuff here.
- if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
- && activePopupWidget() ->parentWidget()
- && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
- key = Qt::Key_Return;
+ // specialised actions for certain widgets. May want to
+ // add more stuff here.
+ if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
+ && activePopupWidget() ->parentWidget()
+ && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
+ key = Qt::Key_Return;
- if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
- key = Qt::Key_Return;
+ if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
+ key = Qt::Key_Return;
#ifdef QWS
- ke->simpleData.keycode = key;
+ ke->simpleData.keycode = key;
#endif
}
/*!
\internal
*/
#ifdef QWS
bool QPEApplication::qwsEventFilter( QWSEvent * e )
{
- if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
- if ( qApp->type() != QApplication::GuiServer ) {
- QCopEnvelope e( "QPE/System", "notBusy(QString)" );
- e << d->appName;
- }
- d->notbusysent = TRUE;
- }
- if ( type() == GuiServer ) {
- switch ( e->type ) {
- case QWSEvent::Mouse:
- if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
- emit clientMoused();
- break;
- default:
- break;
- }
- }
- if ( e->type == QWSEvent::Key ) {
- QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
- if ( ke->simpleData.keycode == Qt::Key_F33 ) {
- // Use special "OK" key to press "OK" on top level widgets
- QWidget * active = activeWindow();
- QWidget *popup = 0;
- if ( active && active->isPopup() ) {
- popup = active;
- active = active->parentWidget();
- }
- if ( active && ( int ) active->winId() == ke->simpleData.window &&
- !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
- if ( ke->simpleData.is_press ) {
- if ( popup )
- popup->close();
- if ( active->inherits( "QDialog" ) ) {
- HackDialog * d = ( HackDialog * ) active;
- d->acceptIt();
- return TRUE;
- }
- else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
- QSignal s;
- s.connect( active, SLOT( accept() ) );
- s.activate();
- }
- else {
- // do the same as with the select key: Map to the default action of the widget:
- mapToDefaultAction( ke, Qt::Key_Return );
- }
- }
- }
- }
- else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
- // Use special "select" key to do whatever default action a widget has
- mapToDefaultAction( ke, Qt::Key_Space );
- }
- else if ( ke->simpleData.keycode == Qt::Key_Escape &&
- ke->simpleData.is_press ) {
- // Escape key closes app if focus on toplevel
- QWidget * active = activeWindow();
- if ( active && active->testWFlags( WType_TopLevel ) &&
- ( int ) active->winId() == ke->simpleData.window &&
- !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
- if ( active->inherits( "QDialog" ) ) {
- HackDialog * d = ( HackDialog * ) active;
- d->rejectIt();
- return TRUE;
- } else /*if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 )*/ {
- active->close();
- }
- }
-
- }
- else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
- // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
- // but we cannot access libopie function within libqpe :(
-
- QWidget * active = activeWindow ( );
- if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
- if ( d-> kbgrabbed ) { // we grabbed the keyboard
- QChar ch ( ke-> simpleData.unicode );
- QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
- ke-> simpleData.keycode,
- ch. latin1 ( ),
- ke-> simpleData.modifiers,
- QString ( ch ),
- ke-> simpleData.is_auto_repeat, 1 );
-
- QObject *which = QWidget::keyboardGrabber ( );
- if ( !which )
- which = QApplication::focusWidget ( );
- if ( !which )
- which = QApplication::activeWindow ( );
- if ( !which )
- which = qApp;
-
- QApplication::sendEvent ( which, &qke );
- }
- else { // we didn't grab the keyboard, so send the event to the launcher
- QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
- e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
- }
- }
- return true;
- }
- }
- if ( e->type == QWSEvent::Focus ) {
- QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
- if ( !fe->simpleData.get_focus ) {
- QWidget * active = activeWindow();
- while ( active && active->isPopup() ) {
- active->close();
- active = activeWindow();
- }
- }
- else {
- // make sure our modal widget is ALWAYS on top
- QWidget *topm = activeModalWidget();
- if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
- topm->raise();
- }
- }
- if ( fe->simpleData.get_focus && inputMethodDict ) {
- InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
- if ( m == AlwaysOff )
- Global::hideInputMethod();
- if ( m == AlwaysOn )
- Global::showInputMethod();
- }
- }
-
-
- return QApplication::qwsEventFilter( e );
+ if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
+ if ( qApp->type() != QApplication::GuiServer ) {
+ QCopEnvelope e( "QPE/System", "notBusy(QString)" );
+ e << d->appName;
+ }
+ d->notbusysent = TRUE;
+ }
+ if ( type() == GuiServer ) {
+ switch ( e->type ) {
+ case QWSEvent::Mouse:
+ if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
+ emit clientMoused();
+ break;
+ default:
+ break;
+ }
+ }
+ if ( e->type == QWSEvent::Key ) {
+ QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
+ if ( ke->simpleData.keycode == Qt::Key_F33 ) {
+ // Use special "OK" key to press "OK" on top level widgets
+ QWidget * active = activeWindow();
+ QWidget *popup = 0;
+ if ( active && active->isPopup() ) {
+ popup = active;
+ active = active->parentWidget();
+ }
+ if ( active && ( int ) active->winId() == ke->simpleData.window &&
+ !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
+ if ( ke->simpleData.is_press ) {
+ if ( popup )
+ popup->close();
+ if ( active->inherits( "QDialog" ) ) {
+ HackDialog * d = ( HackDialog * ) active;
+ d->acceptIt();
+ return TRUE;
+ }
+ else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
+ QSignal s;
+ s.connect( active, SLOT( accept() ) );
+ s.activate();
+ }
+ else {
+ // do the same as with the select key: Map to the default action of the widget:
+ mapToDefaultAction( ke, Qt::Key_Return );
+ }
+ }
+ }
+ }
+ else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
+ // Use special "select" key to do whatever default action a widget has
+ mapToDefaultAction( ke, Qt::Key_Space );
+ }
+ else if ( ke->simpleData.keycode == Qt::Key_Escape &&
+ ke->simpleData.is_press ) {
+ // Escape key closes app if focus on toplevel
+ QWidget * active = activeWindow();
+ if ( active && active->testWFlags( WType_TopLevel ) &&
+ ( int ) active->winId() == ke->simpleData.window &&
+ !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
+ if ( active->inherits( "QDialog" ) ) {
+ HackDialog * d = ( HackDialog * ) active;
+ d->rejectIt();
+ return TRUE;
+ } else /*if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 )*/ {
+ active->close();
+ }
+ }
+
+ }
+ else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
+ // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
+ // but we cannot access libopie function within libqpe :(
+
+ QWidget * active = activeWindow ( );
+ if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
+ if ( d-> kbgrabbed ) { // we grabbed the keyboard
+ QChar ch ( ke-> simpleData.unicode );
+ QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
+ ke-> simpleData.keycode,
+ ch. latin1 ( ),
+ ke-> simpleData.modifiers,
+ QString ( ch ),
+ ke-> simpleData.is_auto_repeat, 1 );
+
+ QObject *which = QWidget::keyboardGrabber ( );
+ if ( !which )
+ which = QApplication::focusWidget ( );
+ if ( !which )
+ which = QApplication::activeWindow ( );
+ if ( !which )
+ which = qApp;
+
+ QApplication::sendEvent ( which, &qke );
+ }
+ else { // we didn't grab the keyboard, so send the event to the launcher
+ QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
+ e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
+ }
+ }
+ return true;
+ }
+ }
+ if ( e->type == QWSEvent::Focus ) {
+ QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
+ if ( !fe->simpleData.get_focus ) {
+ QWidget * active = activeWindow();
+ while ( active && active->isPopup() ) {
+ active->close();
+ active = activeWindow();
+ }
+ }
+ else {
+ // make sure our modal widget is ALWAYS on top
+ QWidget *topm = activeModalWidget();
+ if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
+ topm->raise();
+ }
+ }
+ if ( fe->simpleData.get_focus && inputMethodDict ) {
+ InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
+ if ( m == AlwaysOff )
+ Global::hideInputMethod();
+ if ( m == AlwaysOn )
+ Global::showInputMethod();
+ }
+ }
+
+
+ return QApplication::qwsEventFilter( e );
}
#endif
/*!
Destroys the QPEApplication.
*/
QPEApplication::~QPEApplication()
{
- ungrabKeyboard();
+ ungrabKeyboard();
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
- // Need to delete QCopChannels early, since the display will
- // be gone by the time we get to ~QObject().
- delete sysChannel;
- delete pidChannel;
+ // Need to delete QCopChannels early, since the display will
+ // be gone by the time we get to ~QObject().
+ delete sysChannel;
+ delete pidChannel;
#endif
- delete d;
+ delete d;
}
/*!
Returns <tt>$OPIEDIR/</tt>.
*/
QString QPEApplication::qpeDir()
{
- const char * base = getenv( "OPIEDIR" );
- if ( base )
- return QString( base ) + "/";
+ const char * base = getenv( "OPIEDIR" );
+ if ( base )
+ return QString( base ) + "/";
- return QString( "../" );
+ return QString( "../" );
}
/*!
Returns the user's current Document directory. There is a trailing "/".
.. well, it does now,, and there's no trailing '/'
*/
QString QPEApplication::documentDir()
{
- const char* base = getenv( "HOME");
- if ( base )
- return QString( base ) + "/Documents";
+ const char* base = getenv( "HOME");
+ if ( base )
+ return QString( base ) + "/Documents";
- return QString( "../Documents" );
+ return QString( "../Documents" );
}
static int deforient = -1;
/*!
\internal
*/
int QPEApplication::defaultRotation()
{
- if ( deforient < 0 ) {
- QString d = getenv( "QWS_DISPLAY" );
- if ( d.contains( "Rot90" ) ) {
- deforient = 90;
- }
- else if ( d.contains( "Rot180" ) ) {
- deforient = 180;
- }
- else if ( d.contains( "Rot270" ) ) {
- deforient = 270;
- }
- else {
- deforient = 0;
- }
- }
- return deforient;
+ if ( deforient < 0 ) {
+ QString d = getenv( "QWS_DISPLAY" );
+ if ( d.contains( "Rot90" ) ) {
+ deforient = 90;
+ }
+ else if ( d.contains( "Rot180" ) ) {
+ deforient = 180;
+ }
+ else if ( d.contains( "Rot270" ) ) {
+ deforient = 270;
+ }
+ else {
+ deforient = 0;
+ }
+ }
+ return deforient;
}
/*!
\internal
*/
void QPEApplication::setDefaultRotation( int r )
{
- if ( qApp->type() == GuiServer ) {
- deforient = r;
- setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
- Config config("qpe");
- config.setGroup( "Rotation" );
- config.writeEntry( "Rot", r );
- }
- else {
+ if ( qApp->type() == GuiServer ) {
+ deforient = r;
+ setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
+ Config config("qpe");
+ config.setGroup( "Rotation" );
+ config.writeEntry( "Rot", r );
+ }
+ else {
#ifndef QT_NO_COP
- { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
- e << r;
- }
+ { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
+ e << r;
+ }
#endif
- }
+ }
}
#include <qgfx_qws.h>
#include <qwindowsystem_qws.h>
extern void qws_clearLoadedFonts();
void QPEApplication::setCurrentMode( int x, int y, int depth )
{
// Reset the caches
qws_clearLoadedFonts();
QPixmapCache::clear();
// Change the screen mode
qt_screen->setMode(x, y, depth);
if ( qApp->type() == GuiServer ) {
// Reconfigure the GuiServer
qwsServer->beginDisplayReconfigure();
qwsServer->endDisplayReconfigure();
// Get all the running apps to reset
QCopEnvelope env( "QPE/System", "reset()" );
}
}
void QPEApplication::reset() {
// Reconnect to the screen
qt_screen->disconnect();
qt_screen->connect( QString::null );
// Redraw everything
applyStyle();
}
extern bool qt_left_hand_scrollbars __attribute__(( weak ));
/*!
\internal
*/
void QPEApplication::applyStyle()
{
- Config config( "qpe" );
- config.setGroup( "Appearance" );
+ Config config( "qpe" );
+ config.setGroup( "Appearance" );
#if QT_VERSION > 233
#if !defined(OPIE_NO_OVERRIDE_QT)
- // don't block ourselves ...
- Opie::force_appearance = 0;
-
- static QString appname = Opie::binaryName ( );
-
- QStringList ex = config. readListEntry ( "NoStyle", ';' );
- int nostyle = 0;
- for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
- if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
- nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
- break;
- }
- }
+ // don't block ourselves ...
+ Opie::force_appearance = 0;
+
+ static QString appname = Opie::binaryName ( );
+
+ QStringList ex = config. readListEntry ( "NoStyle", ';' );
+ int nostyle = 0;
+ for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
+ if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
+ nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
+ break;
+ }
+ }
#else
int nostyle = 0;
#endif
- // Widget style
- QString style = config.readEntry( "Style", "FlatStyle" );
+ // Widget style
+ QString style = config.readEntry( "Style", "FlatStyle" );
- // don't set a custom style
- if ( nostyle & Opie::Force_Style )
- style = "FlatStyle";
+ // don't set a custom style
+ if ( nostyle & Opie::Force_Style )
+ style = "FlatStyle";
- internalSetStyle ( style );
+ internalSetStyle ( style );
- // Colors - from /etc/colors/Liquid.scheme
- QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
- QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
- QPalette pal( btncolor, bgcolor );
- QString color = config.readEntry( "Highlight", "#73adef" );
- pal.setColor( QColorGroup::Highlight, QColor( color ) );
- color = config.readEntry( "HighlightedText", "#FFFFFF" );
- pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
- color = config.readEntry( "Text", "#000000" );
- pal.setColor( QColorGroup::Text, QColor( color ) );
- color = config.readEntry( "ButtonText", "#000000" );
- pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
- color = config.readEntry( "Base", "#FFFFFF" );
- pal.setColor( QColorGroup::Base, QColor( color ) );
+ // Colors - from /etc/colors/Liquid.scheme
+ QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
+ QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
+ QPalette pal( btncolor, bgcolor );
+ QString color = config.readEntry( "Highlight", "#73adef" );
+ pal.setColor( QColorGroup::Highlight, QColor( color ) );
+ color = config.readEntry( "HighlightedText", "#FFFFFF" );
+ pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
+ color = config.readEntry( "Text", "#000000" );
+ pal.setColor( QColorGroup::Text, QColor( color ) );
+ color = config.readEntry( "ButtonText", "#000000" );
+ pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
+ color = config.readEntry( "Base", "#FFFFFF" );
+ pal.setColor( QColorGroup::Base, QColor( color ) );
- pal.setColor( QPalette::Disabled, QColorGroup::Text,
- pal.color( QPalette::Active, QColorGroup::Background ).dark() );
+ pal.setColor( QPalette::Disabled, QColorGroup::Text,
+ pal.color( QPalette::Active, QColorGroup::Background ).dark() );
- setPalette( pal, TRUE );
+ setPalette( pal, TRUE );
// Set the ScrollBar on the 'right' side but only if the weak symbol is present
if (&qt_left_hand_scrollbars )
qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false );
- // Window Decoration
- QString dec = config.readEntry( "Decoration", "Flat" );
+ // Window Decoration
+ QString dec = config.readEntry( "Decoration", "Flat" );
- // don't set a custom deco
- if ( nostyle & Opie::Force_Decoration )
- dec = "";
+ // don't set a custom deco
+ if ( nostyle & Opie::Force_Decoration )
+ dec = "";
- if ( dec != d->decorationName ) {
- qwsSetDecoration( new QPEDecoration( dec ) );
- d->decorationName = dec;
- }
+ if ( dec != d->decorationName ) {
+ qwsSetDecoration( new QPEDecoration( dec ) );
+ d->decorationName = dec;
+ }
- // Font
- QString ff = config.readEntry( "FontFamily", font().family() );
- int fs = config.readNumEntry( "FontSize", font().pointSize() );
+ // Font
+ QString ff = config.readEntry( "FontFamily", font().family() );
+ int fs = config.readNumEntry( "FontSize", font().pointSize() );
- // don't set a custom font
- if ( nostyle & Opie::Force_Font ) {
- ff = "Vera";
- fs = 10;
- }
+ // don't set a custom font
+ if ( nostyle & Opie::Force_Font ) {
+ ff = "Vera";
+ fs = 10;
+ }
- setFont ( QFont ( ff, fs ), true );
+ setFont ( QFont ( ff, fs ), true );
#if !defined(OPIE_NO_OVERRIDE_QT)
- // revert to global blocking policy ...
- Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
- Opie::force_appearance &= ~nostyle;
+ // revert to global blocking policy ...
+ Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
+ Opie::force_appearance &= ~nostyle;
#endif
#endif
}
void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
{
#ifdef Q_WS_QWS
- QDataStream stream( data, IO_ReadOnly );
- if ( msg == "applyStyle()" ) {
- applyStyle();
- }
- else if ( msg == "toggleApplicationMenu()" ) {
- QWidget *active = activeWindow ( );
-
- if ( active ) {
- QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
- bool oldactive = man-> isActive ( );
-
- man-> setActive( !man-> isActive() );
-
- if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
- QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
- }
- }
- }
- else if ( msg == "setDefaultRotation(int)" ) {
- if ( type() == GuiServer ) {
- int r;
- stream >> r;
- setDefaultRotation( r );
- }
- }
- else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
+ QDataStream stream( data, IO_ReadOnly );
+ if ( msg == "applyStyle()" ) {
+ applyStyle();
+ }
+ else if ( msg == "toggleApplicationMenu()" ) {
+ QWidget *active = activeWindow ( );
+
+ if ( active ) {
+ QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
+ bool oldactive = man-> isActive ( );
+
+ man-> setActive( !man-> isActive() );
+
+ if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
+ QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
+ }
+ }
+ }
+ else if ( msg == "setDefaultRotation(int)" ) {
+ if ( type() == GuiServer ) {
+ int r;
+ stream >> r;
+ setDefaultRotation( r );
+ }
+ }
+ else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
if ( type() == GuiServer ) {
- int x, y, depth;
- stream >> x;
- stream >> y;
- stream >> depth;
- setCurrentMode( x, y, depth );
+ int x, y, depth;
+ stream >> x;
+ stream >> y;
+ stream >> depth;
+ setCurrentMode( x, y, depth );
}
- }
- else if ( msg == "reset()" ) {
+ }
+ else if ( msg == "reset()" ) {
if ( type() != GuiServer )
reset();
- }
- else if ( msg == "setCurrentRotation(int)" ) {
- int r;
- stream >> r;
- setCurrentRotation( r );
- }
- else if ( msg == "shutdown()" ) {
- if ( type() == GuiServer )
- shutdown();
- }
- else if ( msg == "quit()" ) {
- if ( type() != GuiServer )
- tryQuit();
- }
- else if ( msg == "forceQuit()" ) {
- if ( type() != GuiServer )
- quit();
- }
- else if ( msg == "restart()" ) {
- if ( type() == GuiServer )
- restart();
- }
- else if ( msg == "language(QString)" ) {
- if ( type() == GuiServer ) {
- QString l;
- stream >> l;
- QString cl = getenv( "LANG" );
- if ( cl != l ) {
- if ( l.isNull() )
- unsetenv( "LANG" );
- else
- setenv( "LANG", l.latin1(), 1 );
- restart();
- }
- }
- }
- else if ( msg == "timeChange(QString)" ) {
- QString t;
- stream >> t;
- if ( t.isNull() )
- unsetenv( "TZ" );
- else
- setenv( "TZ", t.latin1(), 1 );
- // emit the signal so everyone else knows...
- emit timeChanged();
- }
- else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
- if ( type() == GuiServer ) {
- QDateTime when;
- QCString channel, message;
- int data;
- stream >> when >> channel >> message >> data;
- AlarmServer::addAlarm( when, channel, message, data );
- }
- }
- else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
- if ( type() == GuiServer ) {
- QDateTime when;
- QCString channel, message;
- int data;
- stream >> when >> channel >> message >> data;
- AlarmServer::deleteAlarm( when, channel, message, data );
- }
- }
- else if ( msg == "clockChange(bool)" ) {
- int tmp;
- stream >> tmp;
- emit clockChanged( tmp );
- }
- else if ( msg == "weekChange(bool)" ) {
- int tmp;
- stream >> tmp;
- emit weekChanged( tmp );
- }
- else if ( msg == "setDateFormat(DateFormat)" ) {
- DateFormat tmp;
- stream >> tmp;
- emit dateFormatChanged( tmp );
- }
- else if ( msg == "setVolume(int,int)" ) {
- int t, v;
- stream >> t >> v;
- setVolume( t, v );
- emit volumeChanged( muted );
- }
- else if ( msg == "volumeChange(bool)" ) {
- stream >> muted;
- setVolume();
- emit volumeChanged( muted );
- }
- else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
- int t, v;
- stream >> t >> v;
- setMic( t, v );
- emit micChanged( micMuted );
- }
- else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
- stream >> micMuted;
- setMic();
- emit micChanged( micMuted );
- }
- else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- int t, v;
- stream >> t >> v;
- setBass( t, v );
- }
- else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- setBass();
- }
- else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- int t, v;
- stream >> t >> v;
- setTreble( t, v );
- }
- else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- setTreble();
- } else if ( msg == "getMarkedText()" ) {
- if ( type() == GuiServer ) {
- const ushort unicode = 'C'-'@';
- const int scan = Key_C;
- qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
- qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
- }
+ }
+ else if ( msg == "setCurrentRotation(int)" ) {
+ int r;
+ stream >> r;
+ setCurrentRotation( r );
+ }
+ else if ( msg == "shutdown()" ) {
+ if ( type() == GuiServer )
+ shutdown();
+ }
+ else if ( msg == "quit()" ) {
+ if ( type() != GuiServer )
+ tryQuit();
+ }
+ else if ( msg == "forceQuit()" ) {
+ if ( type() != GuiServer )
+ quit();
+ }
+ else if ( msg == "restart()" ) {
+ if ( type() == GuiServer )
+ restart();
+ }
+ else if ( msg == "language(QString)" ) {
+ if ( type() == GuiServer ) {
+ QString l;
+ stream >> l;
+ QString cl = getenv( "LANG" );
+ if ( cl != l ) {
+ if ( l.isNull() )
+ unsetenv( "LANG" );
+ else
+ setenv( "LANG", l.latin1(), 1 );
+ restart();
+ }
+ }
+ }
+ else if ( msg == "timeChange(QString)" ) {
+ QString t;
+ stream >> t;
+ if ( t.isNull() )
+ unsetenv( "TZ" );
+ else
+ setenv( "TZ", t.latin1(), 1 );
+ // emit the signal so everyone else knows...
+ emit timeChanged();
+ }
+ else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
+ if ( type() == GuiServer ) {
+ QDateTime when;
+ QCString channel, message;
+ int data;
+ stream >> when >> channel >> message >> data;
+ AlarmServer::addAlarm( when, channel, message, data );
+ }
+ }
+ else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
+ if ( type() == GuiServer ) {
+ QDateTime when;
+ QCString channel, message;
+ int data;
+ stream >> when >> channel >> message >> data;
+ AlarmServer::deleteAlarm( when, channel, message, data );
+ }
+ }
+ else if ( msg == "clockChange(bool)" ) {
+ int tmp;
+ stream >> tmp;
+ emit clockChanged( tmp );
+ }
+ else if ( msg == "weekChange(bool)" ) {
+ int tmp;
+ stream >> tmp;
+ emit weekChanged( tmp );
+ }
+ else if ( msg == "setDateFormat(DateFormat)" ) {
+ DateFormat tmp;
+ stream >> tmp;
+ emit dateFormatChanged( tmp );
+ }
+ else if ( msg == "setVolume(int,int)" ) {
+ int t, v;
+ stream >> t >> v;
+ setVolume( t, v );
+ emit volumeChanged( muted );
+ }
+ else if ( msg == "volumeChange(bool)" ) {
+ stream >> muted;
+ setVolume();
+ emit volumeChanged( muted );
+ }
+ else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
+ int t, v;
+ stream >> t >> v;
+ setMic( t, v );
+ emit micChanged( micMuted );
+ }
+ else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
+ stream >> micMuted;
+ setMic();
+ emit micChanged( micMuted );
+ }
+ else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ int t, v;
+ stream >> t >> v;
+ setBass( t, v );
+ }
+ else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ setBass();
+ }
+ else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ int t, v;
+ stream >> t >> v;
+ setTreble( t, v );
+ }
+ else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ setTreble();
+ } else if ( msg == "getMarkedText()" ) {
+ if ( type() == GuiServer ) {
+ const ushort unicode = 'C'-'@';
+ const int scan = Key_C;
+ qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
+ qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
+ }
} else if ( msg == "newChannel(QString)") {
- QString myChannel = "QPE/Application/" + d->appName;
- QString channel;
- stream >> channel;
- if (channel == myChannel) {
- processQCopFile();
- d->sendQCopQ();
- }
+ QString myChannel = "QPE/Application/" + d->appName;
+ QString channel;
+ stream >> channel;
+ if (channel == myChannel) {
+ processQCopFile();
+ d->sendQCopQ();
+ }
}
#endif
}
/*!
\internal
*/
bool QPEApplication::raiseAppropriateWindow()
{
bool r=FALSE;
// 1. Raise the main widget
QWidget *top = d->qpe_main_widget;
if ( !top ) top = mainWidget();
if ( top && d->keep_running ) {
- if ( top->isVisible() )
- r = TRUE;
- else if (d->preloaded) {
- // We are preloaded and not visible.. pretend we just started..
+ if ( top->isVisible() )
+ r = TRUE;
+ else if (d->preloaded) {
+ // We are preloaded and not visible.. pretend we just started..
#ifndef QT_NO_COP
- QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
- e << d->appName;
+ QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
+ e << d->appName;
#endif
- }
+ }
- d->show_mx(top,d->nomaximize, d->appName);
- top->raise();
+ d->show_mx(top,d->nomaximize, d->appName);
+ top->raise();
}
QWidget *topm = activeModalWidget();
// 2. Raise any parentless widgets (except top and topm, as they
// are raised before and after this loop). Order from most
// recently raised as deepest to least recently as top, so
// that repeated calls cycle through widgets.
QWidgetList *list = topLevelWidgets();
if ( list ) {
- bool foundlast = FALSE;
- QWidget* topsub = 0;
- if ( d->lastraised ) {
- for (QWidget* w = list->first(); w; w = list->next()) {
- if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
- if ( w == d->lastraised )
- foundlast = TRUE;
- if ( foundlast ) {
- w->raise();
- topsub = w;
- }
- }
- }
- }
- for (QWidget* w = list->first(); w; w = list->next()) {
- if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
- if ( w == d->lastraised )
- break;
- w->raise();
- topsub = w;
- }
- }
- d->lastraised = topsub;
- delete list;
+ bool foundlast = FALSE;
+ QWidget* topsub = 0;
+ if ( d->lastraised ) {
+ for (QWidget* w = list->first(); w; w = list->next()) {
+ if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
+ if ( w == d->lastraised )
+ foundlast = TRUE;
+ if ( foundlast ) {
+ w->raise();
+ topsub = w;
+ }
+ }
+ }
+ }
+ for (QWidget* w = list->first(); w; w = list->next()) {
+ if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
+ if ( w == d->lastraised )
+ break;
+ w->raise();
+ topsub = w;
+ }
+ }
+ d->lastraised = topsub;
+ delete list;
}
// 3. Raise the active modal widget.
if ( topm ) {
- topm->show();
- topm->raise();
- // If we haven't already handled the fastAppShowing message
- if (!top && d->preloaded) {
+ topm->show();
+ topm->raise();
+ // If we haven't already handled the fastAppShowing message
+ if (!top && d->preloaded) {
#ifndef QT_NO_COP
- QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
- e << d->appName;
+ QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
+ e << d->appName;
#endif
- }
- r = FALSE;
+ }
+ r = FALSE;
}
return r;
}
void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
{
#ifdef Q_WS_QWS
- if ( msg == "quit()" ) {
- tryQuit();
- }
- else if ( msg == "quitIfInvisible()" ) {
- if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
- quit();
- }
- else if ( msg == "close()" ) {
- hideOrQuit();
- }
- else if ( msg == "disablePreload()" ) {
- d->preloaded = FALSE;
- d->keep_running = TRUE;
- /* so that quit will quit */
- }
- else if ( msg == "enablePreload()" ) {
- if (d->qpe_main_widget)
- d->preloaded = TRUE;
- d->keep_running = TRUE;
- /* so next quit won't quit */
- }
- else if ( msg == "raise()" ) {
- d->keep_running = TRUE;
- d->notbusysent = FALSE;
- raiseAppropriateWindow();
- // Tell the system we're still chugging along...
- QCopEnvelope e("QPE/System", "appRaised(QString)");
- e << d->appName;
- }
- else if ( msg == "flush()" ) {
- emit flush();
- // we need to tell the desktop
- QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
- e << d->appName;
- }
- else if ( msg == "reload()" ) {
- emit reload();
- }
- else if ( msg == "setDocument(QString)" ) {
- d->keep_running = TRUE;
- QDataStream stream( data, IO_ReadOnly );
- QString doc;
- stream >> doc;
- QWidget *mw = mainWidget();
- if ( !mw )
- mw = d->qpe_main_widget;
- if ( mw )
- Global::setDocument( mw, doc );
-
- } else if ( msg == "QPEProcessQCop()" ) {
+ if ( msg == "quit()" ) {
+ tryQuit();
+ }
+ else if ( msg == "quitIfInvisible()" ) {
+ if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
+ quit();
+ }
+ else if ( msg == "close()" ) {
+ hideOrQuit();
+ }
+ else if ( msg == "disablePreload()" ) {
+ d->preloaded = FALSE;
+ d->keep_running = TRUE;
+ /* so that quit will quit */
+ }
+ else if ( msg == "enablePreload()" ) {
+ if (d->qpe_main_widget)
+ d->preloaded = TRUE;
+ d->keep_running = TRUE;
+ /* so next quit won't quit */
+ }
+ else if ( msg == "raise()" ) {
+ d->keep_running = TRUE;
+ d->notbusysent = FALSE;
+ raiseAppropriateWindow();
+ // Tell the system we're still chugging along...
+ QCopEnvelope e("QPE/System", "appRaised(QString)");
+ e << d->appName;
+ }
+ else if ( msg == "flush()" ) {
+ emit flush();
+ // we need to tell the desktop
+ QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
+ e << d->appName;
+ }
+ else if ( msg == "reload()" ) {
+ emit reload();
+ }
+ else if ( msg == "setDocument(QString)" ) {
+ d->keep_running = TRUE;
+ QDataStream stream( data, IO_ReadOnly );
+ QString doc;
+ stream >> doc;
+ QWidget *mw = mainWidget();
+ if ( !mw )
+ mw = d->qpe_main_widget;
+ if ( mw )
+ Global::setDocument( mw, doc );
+
+ } else if ( msg == "QPEProcessQCop()" ) {
processQCopFile();
d->sendQCopQ();
}else
{
bool p = d->keep_running;
d->keep_running = FALSE;
emit appMessage( msg, data);
if ( d->keep_running ) {
d->notbusysent = FALSE;
raiseAppropriateWindow();
if ( !p ) {
// Tell the system we're still chugging along...
#ifndef QT_NO_COP
QCopEnvelope e("QPE/System", "appRaised(QString)");
e << d->appName;
#endif
}
}
if ( p )
d->keep_running = p;
- }
+ }
#endif
}
/*!
Sets widget \a mw as the mainWidget() and shows it. For small windows,
consider passing TRUE for \a nomaximize rather than the default FALSE.
\sa showMainDocumentWidget()
*/
void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
{
-// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
+// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
d->show(mw, nomaximize );
}
/*!
Sets widget \a mw as the mainWidget() and shows it. For small windows,
consider passing TRUE for \a nomaximize rather than the default FALSE.
This calls designates the application as
a \link docwidget.html document-oriented\endlink application.
The \a mw widget \e must have this slot: setDocument(const QString&).
\sa showMainWidget()
*/
void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
{
- if ( mw && argc() == 2 )
- Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
+ if ( mw && argc() == 2 )
+ Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
-// setMainWidget(mw); see above
- d->show(mw, nomaximize );
+// setMainWidget(mw); see above
+ d->show(mw, nomaximize );
}
/*!
If an application is started via a \link qcop.html QCop\endlink
message, the application will process the \link qcop.html
QCop\endlink message and then quit. If the application calls this
function while processing a \link qcop.html QCop\endlink message,
after processing its outstanding \link qcop.html QCop\endlink
messages the application will start 'properly' and show itself.
\sa keepRunning()
*/
void QPEApplication::setKeepRunning()
{
- if ( qApp && qApp->inherits( "QPEApplication" ) ) {
- QPEApplication * qpeApp = ( QPEApplication* ) qApp;
- qpeApp->d->keep_running = TRUE;
- }
+ if ( qApp && qApp->inherits( "QPEApplication" ) ) {
+ QPEApplication * qpeApp = ( QPEApplication* ) qApp;
+ qpeApp->d->keep_running = TRUE;
+ }
}
/*!
Returns TRUE if the application will quit after processing the
current list of qcop messages; otherwise returns FALSE.
\sa setKeepRunning()
*/
bool QPEApplication::keepRunning() const
{
- return d->keep_running;
+ return d->keep_running;
}
/*!
\internal
*/
void QPEApplication::internalSetStyle( const QString &style )
{
#if QT_VERSION >= 300
- if ( style == "QPE" ) {
- setStyle( new QPEStyle );
- }
- else {
- QStyle *s = QStyleFactory::create( style );
- if ( s )
- setStyle( s );
- }
+ if ( style == "QPE" ) {
+ setStyle( new QPEStyle );
+ }
+ else {
+ QStyle *s = QStyleFactory::create( style );
+ if ( s )
+ setStyle( s );
+ }
#else
- if ( style == "Windows" ) {
- setStyle( new QWindowsStyle );
- }
- else if ( style == "QPE" ) {
- setStyle( new QPEStyle );
- }
- else if ( style == "Light" ) {
- setStyle( new LightStyle );
- }
+ if ( style == "Windows" ) {
+ setStyle( new QWindowsStyle );
+ }
+ else if ( style == "QPE" ) {
+ setStyle( new QPEStyle );
+ }
+ else if ( style == "Light" ) {
+ setStyle( new LightStyle );
+ }
#ifndef QT_NO_STYLE_PLATINUM
- else if ( style == "Platinum" ) {
- setStyle( new QPlatinumStyle );
- }
+ else if ( style == "Platinum" ) {
+ setStyle( new QPlatinumStyle );
+ }
#endif
#ifndef QT_NO_STYLE_MOTIF
- else if ( style == "Motif" ) {
- setStyle( new QMotifStyle );
- }
+ else if ( style == "Motif" ) {
+ setStyle( new QMotifStyle );
+ }
#endif
#ifndef QT_NO_STYLE_MOTIFPLUS
- else if ( style == "MotifPlus" ) {
- setStyle( new QMotifPlusStyle );
- }
+ else if ( style == "MotifPlus" ) {
+ setStyle( new QMotifPlusStyle );
+ }
#endif
- else {
- QStyle *sty = 0;
- QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
+ else {
+ QStyle *sty = 0;
+ QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
#ifdef Q_OS_MACX
- if ( style. find ( ".dylib" ) > 0 )
- path += style;
- else
- path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility
+ if ( style. find ( ".dylib" ) > 0 )
+ path += style;
+ else
+ path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility
#else
- if ( style. find ( ".so" ) > 0 )
- path += style;
- else
- path = path + "lib" + style. lower ( ) + ".so"; // compatibility
+ if ( style. find ( ".so" ) > 0 )
+ path += style;
+ else
+ path = path + "lib" + style. lower ( ) + ".so"; // compatibility
#endif
- static QLibrary *lastlib = 0;
- static StyleInterface *lastiface = 0;
-
- QLibrary *lib = new QLibrary ( path );
- StyleInterface *iface = 0;
-
- if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
- sty = iface-> style ( );
-
- if ( sty ) {
- setStyle ( sty );
-
- if ( lastiface )
- lastiface-> release ( );
- lastiface = iface;
-
- if ( lastlib ) {
- lastlib-> unload ( );
- delete lastlib;
- }
- lastlib = lib;
- }
- else {
- if ( iface )
- iface-> release ( );
- delete lib;
-
- setStyle ( new LightStyle ( ));
- }
- }
+ static QLibrary *lastlib = 0;
+ static StyleInterface *lastiface = 0;
+
+ QLibrary *lib = new QLibrary ( path );
+ StyleInterface *iface = 0;
+
+ if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
+ sty = iface-> style ( );
+
+ if ( sty ) {
+ setStyle ( sty );
+
+ if ( lastiface )
+ lastiface-> release ( );
+ lastiface = iface;
+
+ if ( lastlib ) {
+ lastlib-> unload ( );
+ delete lastlib;
+ }
+ lastlib = lib;
+ }
+ else {
+ if ( iface )
+ iface-> release ( );
+ delete lib;
+
+ setStyle ( new LightStyle ( ));
+ }
+ }
#endif
}
/*!
\internal
*/
void QPEApplication::prepareForTermination( bool willrestart )
{
- if ( willrestart ) {
- // Draw a big wait icon, the image can be altered in later revisions
- // QWidget *d = QApplication::desktop();
- QImage img = Resource::loadImage( "launcher/new_wait" );
- QPixmap pix;
- pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) );
- QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize |
- QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
- lblWait->setPixmap( pix );
- lblWait->setAlignment( QWidget::AlignCenter );
- lblWait->show();
- lblWait->showMaximized();
- }
+ if ( willrestart ) {
+ // Draw a big wait icon, the image can be altered in later revisions
+ // QWidget *d = QApplication::desktop();
+ QImage img = Resource::loadImage( "launcher/new_wait" );
+ QPixmap pix;
+ pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) );
+ QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize |
+ QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
+ lblWait->setPixmap( pix );
+ lblWait->setAlignment( QWidget::AlignCenter );
+ lblWait->show();
+ lblWait->showMaximized();
+ }
#ifndef SINGLE_APP
- { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
- }
- processEvents(); // ensure the message goes out.
- sleep( 1 ); // You have 1 second to comply.
+ { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
+ }
+ processEvents(); // ensure the message goes out.
+ sleep( 1 ); // You have 1 second to comply.
#endif
}
/*!
\internal
*/
void QPEApplication::shutdown()
{
- // Implement in server's QPEApplication subclass
+ // Implement in server's QPEApplication subclass
}
/*!
\internal
*/
void QPEApplication::restart()
{
- // Implement in server's QPEApplication subclass
+ // Implement in server's QPEApplication subclass
}
static QPtrDict<void>* stylusDict = 0;
static void createDict()
{
- if ( !stylusDict )
- stylusDict = new QPtrDict<void>;
+ if ( !stylusDict )
+ stylusDict = new QPtrDict<void>;
}
/*!
Returns the current StylusMode for widget \a w.
\sa setStylusOperation() StylusMode
*/
QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
{
- if ( stylusDict )
- return ( StylusMode ) ( int ) stylusDict->find( w );
- return LeftOnly;
+ if ( stylusDict )
+ return ( StylusMode ) ( int ) stylusDict->find( w );
+ return LeftOnly;
}
/*!
\enum QPEApplication::StylusMode
\value LeftOnly the stylus only generates LeftButton
events (the default).
\value RightOnHold the stylus generates RightButton events
if the user uses the press-and-hold gesture.
\sa setStylusOperation() stylusOperation()
*/
/*!
Causes widget \a w to receive mouse events according to the stylus
\a mode.
\sa stylusOperation() StylusMode
*/
void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode )
{
- createDict();
- if ( mode == LeftOnly ) {
- stylusDict->remove
- ( w );
- w->removeEventFilter( qApp );
- }
- else {
- stylusDict->insert( w, ( void* ) mode );
- connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) );
- w->installEventFilter( qApp );
- }
+ createDict();
+ if ( mode == LeftOnly ) {
+ stylusDict->remove
+ ( w );
+ w->removeEventFilter( qApp );
+ }
+ else {
+ stylusDict->insert( w, ( void* ) mode );
+ connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) );
+ w->installEventFilter( qApp );
+ }
}
/*!
\reimp
*/
bool QPEApplication::eventFilter( QObject *o, QEvent *e )
{
if ( !o->isWidgetType() )
return FALSE;
- if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
- QMouseEvent * me = ( QMouseEvent* ) e;
- StylusMode mode = (StylusMode)(int)stylusDict->find(o);
- switch (mode) {
- case RightOnHold:
- switch ( me->type() ) {
- case QEvent::MouseButtonPress:
- if ( me->button() == LeftButton ) {
+ if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
+ QMouseEvent * me = ( QMouseEvent* ) e;
+ StylusMode mode = (StylusMode)(int)stylusDict->find(o);
+ switch (mode) {
+ case RightOnHold:
+ switch ( me->type() ) {
+ case QEvent::MouseButtonPress:
+ if ( me->button() == LeftButton ) {
if (!d->presstimer )
d->presstimer = startTimer(500); // #### pref.
- d->presswidget = (QWidget*)o;
- d->presspos = me->pos();
- d->rightpressed = FALSE;
- }
- break;
- case QEvent::MouseMove:
- if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) {
- killTimer(d->presstimer);
- d->presstimer = 0;
- }
- break;
- case QEvent::MouseButtonRelease:
- if ( me->button() == LeftButton ) {
- if ( d->presstimer ) {
- killTimer(d->presstimer);
- d->presstimer = 0;
- }
- if ( d->rightpressed && d->presswidget ) {
- // Right released
- postEvent( d->presswidget,
- new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
- RightButton, LeftButton + RightButton ) );
- // Left released, off-widget
- postEvent( d->presswidget,
- new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1),
- LeftButton, LeftButton ) );
- postEvent( d->presswidget,
- new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1),
- LeftButton, LeftButton ) );
- d->rightpressed = FALSE;
- return TRUE; // don't send the real Left release
- }
- }
- break;
- default:
- break;
- }
- break;
- default:
- ;
- }
- }
- else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
- QKeyEvent *ke = (QKeyEvent *)e;
- if ( ke->key() == Key_Enter ) {
- if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
- postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
- ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
- return TRUE;
- }
- }
- }
- return FALSE;
+ d->presswidget = (QWidget*)o;
+ d->presspos = me->pos();
+ d->rightpressed = FALSE;
+ }
+ break;
+ case QEvent::MouseMove:
+ if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) {
+ killTimer(d->presstimer);
+ d->presstimer = 0;
+ }
+ break;
+ case QEvent::MouseButtonRelease:
+ if ( me->button() == LeftButton ) {
+ if ( d->presstimer ) {
+ killTimer(d->presstimer);
+ d->presstimer = 0;
+ }
+ if ( d->rightpressed && d->presswidget ) {
+ // Right released
+ postEvent( d->presswidget,
+ new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
+ RightButton, LeftButton + RightButton ) );
+ // Left released, off-widget
+ postEvent( d->presswidget,
+ new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1),
+ LeftButton, LeftButton ) );
+ postEvent( d->presswidget,
+ new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1),
+ LeftButton, LeftButton ) );
+ d->rightpressed = FALSE;
+ return TRUE; // don't send the real Left release
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ ;
+ }
+ }
+ else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
+ QKeyEvent *ke = (QKeyEvent *)e;
+ if ( ke->key() == Key_Enter ) {
+ if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
+ postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
+ ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
}
/*!
\reimp
*/
void QPEApplication::timerEvent( QTimerEvent *e )
{
- if ( e->timerId() == d->presstimer && d->presswidget ) {
- // Right pressed
- postEvent( d->presswidget,
- new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
- RightButton, LeftButton ) );
- killTimer( d->presstimer );
- d->presstimer = 0;
- d->rightpressed = TRUE;
- }
+ if ( e->timerId() == d->presstimer && d->presswidget ) {
+ // Right pressed
+ postEvent( d->presswidget,
+ new QMouseEvent( QEvent::MouseButtonPress, d->presspos,
+ RightButton, LeftButton ) );
+ killTimer( d->presstimer );
+ d->presstimer = 0;
+ d->rightpressed = TRUE;
+ }
}
void QPEApplication::removeSenderFromStylusDict()
{
- stylusDict->remove
- ( ( void* ) sender() );
- if ( d->presswidget == sender() )
- d->presswidget = 0;
+ stylusDict->remove
+ ( ( void* ) sender() );
+ if ( d->presswidget == sender() )
+ d->presswidget = 0;
}
/*!
\internal
*/
bool QPEApplication::keyboardGrabbed() const
{
- return d->kbgrabbed;
+ return d->kbgrabbed;
}
/*!
Reverses the effect of grabKeyboard(). This is called automatically
on program exit.
*/
void QPEApplication::ungrabKeyboard()
{
- ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
+ ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
}
/*!
Grabs the physical keyboard keys, e.g. the application's launching
keys. Instead of launching applications when these keys are pressed
the signals emitted are sent to this application instead. Some games
programs take over the launch keys in this way to make interaction
easier.
\sa ungrabKeyboard()
*/
void QPEApplication::grabKeyboard()
{
- ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
+ ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
}
/*!
\reimp
*/
int QPEApplication::exec()
{
d->qcopQok = true;
#ifndef QT_NO_COP
- d->sendQCopQ();
+ d->sendQCopQ();
if ( !d->keep_running )
processEvents(); // we may have received QCop messages in the meantime.
#endif
- if ( d->keep_running )
- //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
- return QApplication::exec();
+ if ( d->keep_running )
+ //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
+ return QApplication::exec();
#ifndef QT_NO_COP
- {
- QCopEnvelope e( "QPE/System", "closing(QString)" );
- e << d->appName;
- }
+ {
+ QCopEnvelope e( "QPE/System", "closing(QString)" );
+ e << d->appName;
+ }
#endif
- processEvents();
- return 0;
+ processEvents();
+ return 0;
}
/*!
\internal
External request for application to quit. Quits if possible without
loosing state.
*/
void QPEApplication::tryQuit()
{
- if ( activeModalWidget() )
- return ; // Inside modal loop or konsole. Too hard to save state.
+ if ( activeModalWidget() )
+ return ; // Inside modal loop or konsole. Too hard to save state.
#ifndef QT_NO_COP
- {
- QCopEnvelope e( "QPE/System", "closing(QString)" );
- e << d->appName;
- }
+ {
+ QCopEnvelope e( "QPE/System", "closing(QString)" );
+ e << d->appName;
+ }
#endif
if ( d->keep_running )
- d->store_widget_rect(d->qpe_main_widget, d->appName);
- processEvents();
+ d->store_widget_rect(d->qpe_main_widget, d->appName);
+ processEvents();
- quit();
+ quit();
}
/*!
\internal
*/
void QPEApplication::installTranslation( const QString& baseName ) {
QTranslator* trans = new QTranslator(this);
QString tfn = qpeDir() + "/i18n/"+baseName;
if ( trans->load( tfn ) )
installTranslator( trans );
else
delete trans;
}
/*!
\internal
User initiated quit. Makes the window 'Go Away'. If preloaded this means
hiding the window. If not it means quitting the application.
As this is user initiated we don't need to check state.
*/
void QPEApplication::hideOrQuit()
{
if ( d->keep_running )
- d->store_widget_rect(d->qpe_main_widget, d->appName);
- processEvents();
+ d->store_widget_rect(d->qpe_main_widget, d->appName);
+ processEvents();
- // If we are a preloaded application we don't actually quit, so emit
- // a System message indicating we're quasi-closing.
- if ( d->preloaded && d->qpe_main_widget )
+ // If we are a preloaded application we don't actually quit, so emit
+ // a System message indicating we're quasi-closing.
+ if ( d->preloaded && d->qpe_main_widget )
#ifndef QT_NO_COP
- {
- QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
- e << d->appName;
- d->qpe_main_widget->hide();
- }
+ {
+ QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
+ e << d->appName;
+ d->qpe_main_widget->hide();
+ }
#endif
- else
- quit();
+ else
+ quit();
}
#if (__GNUC__ > 2 )
extern "C" void __cxa_pure_virtual();
void __cxa_pure_virtual()
{
fprintf( stderr, "Pure virtual called\n");
abort();
}
#endif
#if defined(OPIE_NEW_MALLOC)
// The libraries with the skiff package (and possibly others) have
// completely useless implementations of builtin new and delete that
// use about 50% of your CPU. Here we revert to the simple libc
// functions.
void* operator new[]( size_t size )
{
- return malloc( size );
+ return malloc( size );
}
void* operator new( size_t size )
{
- return malloc( size );
+ return malloc( size );
}
void operator delete[]( void* p )
{
- free( p );
+ free( p );
}
void operator delete[]( void* p, size_t /*size*/ )
{
- free( p );
+ free( p );
}
void operator delete( void* p )
{
- free( p );
+ free( p );
}
void operator delete( void* p, size_t /*size*/ )
{
- free( p );
+ free( p );
}
#endif
#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP)
#include <qwidgetlist.h>
#ifdef QWS
#include <qgfx_qws.h>
extern QRect qt_maxWindowRect;
void qt_setMaxWindowRect(const QRect& r )
{
- qt_maxWindowRect = qt_screen->mapFromDevice( r,
- qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) );
- // Re-resize any maximized windows
- QWidgetList* l = QApplication::topLevelWidgets();
- if ( l ) {
- QWidget * w = l->first();
- while ( w ) {
- if ( w->isVisible() && w->isMaximized() ) {
- w->showMaximized();
- }
- w = l->next();
- }
- delete l;
- }
+ qt_maxWindowRect = qt_screen->mapFromDevice( r,
+ qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) );
+ // Re-resize any maximized windows
+ QWidgetList* l = QApplication::topLevelWidgets();
+ if ( l ) {
+ QWidget * w = l->first();
+ while ( w ) {
+ if ( w->isVisible() && w->isMaximized() ) {
+ w->showMaximized();
+ }
+ w = l->next();
+ }
+ delete l;
+ }
}
#endif
#endif