70 files changed, 724 insertions, 1685 deletions
diff --git a/configs/linux-arm-g++-sharedx11 b/configs/linux-arm-g++-sharedx11 deleted file mode 100644 index b810b05..0000000 --- a/configs/linux-arm-g++-sharedx11 +++ b/dev/null @@ -1,97 +0,0 @@ -# Compiling -INTERFACE_DECL_PATH = . -SYSCONF_CXX = arm-linux-g++ -SYSCONF_CC = arm-linux-gcc -DASHCROSS = -arm - -# Set XROOT to the root directory of the arm X11 files for cross compiling -XROOT=/scratch/src/xfree86.41/xbinaries -# Compiling with support libraries -SYSCONF_CXXFLAGS_X11 = -SYSCONF_CXXFLAGS_QT = -I$(QTDIR)/include -SYSCONF_CXXFLAGS_OPENGL = -I$(XROOT)/usr/X11R6/include - -# Compiling YACC output -SYSCONF_CXXFLAGS_YACC = -Wno-unused -Wno-parentheses - -# Linking with support libraries -SYSCONF_RPATH_X11 = -SYSCONF_RPATH_QT = -Wl,-rpath,$(QTDIR)/lib,-rpath,$(XROOT)/usr/X11R6/lib -SYSCONF_RPATH_OPENGL = -Wl,-rpath,$(XROOT)/usr/X11R6/lib - -# Linking with support libraries -# X11 -SYSCONF_LFLAGS_X11 = -SYSCONF_LIBS_X11 = -# Qt, Qt+OpenGL -SYSCONF_LFLAGS_QT = -L$(QTDIR)/lib -SYSCONF_LIBS_QT = -lqt$(QT_THREAD_SUFFIX) -SYSCONF_LIBS_QT_OPENGL = -# OpenGL -SYSCONF_LFLAGS_OPENGL = -L$(XROOT)/usr/X11R6/lib -SYSCONF_LIBS_OPENGL = -# Yacc -SYSCONF_LIBS_YACC = - -# Linking applications -SYSCONF_LINK = arm-linux-gcc -SYSCONF_LFLAGS = -SYSCONF_LIBS = - -# Link flags for shared objects -SYSCONF_LFLAGS_SHOBJ = -shared - -# Flags for threading -SYSCONF_CFLAGS_THREAD = -D_REENTRANT -SYSCONF_CXXFLAGS_THREAD = -D_REENTRANT -SYSCONF_LFLAGS_THREAD = -SYSCONF_LIBS_THREAD = -lpthread - -# Point to /usr/bin for moc and uic since we are cross compiling here -# Meta-object compiler -SYSCONF_MOC = /usr/bin/moc - -# UI compiler -SYSCONF_UIC = /usr/bin/uic - -# Linking shared libraries -# - Build the $(TARGET) library, eg. lib$(TARGET).so.2.2.2 -# - Place target in $(DESTDIR) - which has a trailing / -# - Usually needs to incorporate $(VER_MAJ), $(VER_MIN) and $(VER_PATCH) -# -SYSCONF_LINK_SHLIB = arm-linux-gcc -SYSCONF_LINK_TARGET_SHARED = lib$(TARGET).so.$(VER_MAJ).$(VER_MIN).$(VER_PATCH) -SYSCONF_LINK_LIB_SHARED = $(SYSCONF_LINK_SHLIB) -shared -Wl,-soname,lib$(TARGET).so.$(VER_MAJ) \ - $(LFLAGS) -o $(SYSCONF_LINK_TARGET_SHARED) \ - $(OBJECTS) $(OBJMOC) $(LIBS) && \ - mv $(SYSCONF_LINK_TARGET_SHARED) $(DESTDIR); \ - cd $(DESTDIR) && \ - rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN); \ - ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so; \ - ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ); \ - ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN) - -# Linking static libraries -# - Build the $(TARGET) library, eg. lib$(TARGET).a -# - Place target in $(DESTDIR) - which has a trailing / -# -SYSCONF_AR = arm-linux-ar cqs -SYSCONF_LINK_TARGET_STATIC = lib$(TARGET).a -SYSCONF_LINK_LIB_STATIC = rm -f $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) ; \ - $(SYSCONF_AR) $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) $(OBJECTS) $(OBJMOC) -# Compiling application source -SYSCONF_CXXFLAGS = -pipe -DQT_NO_COP -fno-exceptions -fno-rtti -O2 -Wall -W -SYSCONF_CFLAGS = -pipe -O2 -Wall -W -# Default link type (static linking is still be used where required) -SYSCONF_LINK_LIB = $(SYSCONF_LINK_LIB_SHARED) -SYSCONF_LINK_TARGET = $(SYSCONF_LINK_TARGET_SHARED) -# Compiling library source -SYSCONF_CXXFLAGS_LIB = -fPIC -SYSCONF_CFLAGS_LIB = -fPIC -# Compiling shared-object source -SYSCONF_CXXFLAGS_SHOBJ = -fPIC -SYSCONF_CFLAGS_SHOBJ = -fPIC -# Linking Qt -SYSCONF_LIBS_QTLIB = $(SYSCONF_LFLAGS_X11) $(QT_LIBS_MT) $(QT_LIBS_OPT) -# Linking Qt applications -SYSCONF_LIBS_QTAPP = diff --git a/configs/linux-generic-g++-sharedx11 b/configs/linux-generic-g++-sharedx11 deleted file mode 100644 index 1cd7a46..0000000 --- a/configs/linux-generic-g++-sharedx11 +++ b/dev/null @@ -1,94 +0,0 @@ -# Compiling -INTERFACE_DECL_PATH = . -SYSCONF_CXX = g++ -SYSCONF_CC = gcc -DASHCROSS = - -# Compiling with support libraries -SYSCONF_CXXFLAGS_X11 = -SYSCONF_CXXFLAGS_QT = -I$(QTDIR)/include -SYSCONF_CXXFLAGS_OPENGL = -I/usr/X11R6/include - -# Compiling YACC output -SYSCONF_CXXFLAGS_YACC = -Wno-unused -Wno-parentheses - -# Linking with support libraries -SYSCONF_RPATH_X11 = -SYSCONF_RPATH_QT = -Wl,-rpath,$(QTDIR)/lib -SYSCONF_RPATH_OPENGL = -Wl,-rpath,/usr/X11R6/lib - -# Linking with support libraries -# X11 -SYSCONF_LFLAGS_X11 = -SYSCONF_LIBS_X11 = -# Qt, Qt+OpenGL -SYSCONF_LFLAGS_QT = -L$(QTDIR)/lib -SYSCONF_LIBS_QT = -lqt$(QT_THREAD_SUFFIX) -SYSCONF_LIBS_QT_OPENGL = -# OpenGL -SYSCONF_LFLAGS_OPENGL = -L/usr/X11R6/lib -SYSCONF_LIBS_OPENGL = -# Yacc -SYSCONF_LIBS_YACC = - -# Linking applications -SYSCONF_LINK = gcc -SYSCONF_LFLAGS = -SYSCONF_LIBS = - -# Link flags for shared objects -SYSCONF_LFLAGS_SHOBJ = -shared - -# Flags for threading -SYSCONF_CFLAGS_THREAD = -D_REENTRANT -SYSCONF_CXXFLAGS_THREAD = -D_REENTRANT -SYSCONF_LFLAGS_THREAD = -SYSCONF_LIBS_THREAD = -lpthread - -# Meta-object compiler -SYSCONF_MOC = $(QTDIR)/bin/moc - -# UI compiler -SYSCONF_UIC = $(QTDIR)/bin/uic - -# Linking shared libraries -# - Build the $(TARGET) library, eg. lib$(TARGET).so.2.2.2 -# - Place target in $(DESTDIR) - which has a trailing / -# - Usually needs to incorporate $(VER_MAJ), $(VER_MIN) and $(VER_PATCH) -# -SYSCONF_LINK_SHLIB = gcc -SYSCONF_LINK_TARGET_SHARED = lib$(TARGET).so.$(VER_MAJ).$(VER_MIN).$(VER_PATCH) -SYSCONF_LINK_LIB_SHARED = $(SYSCONF_LINK_SHLIB) -shared -Wl,-soname,lib$(TARGET).so.$(VER_MAJ) \ - $(LFLAGS) -o $(SYSCONF_LINK_TARGET_SHARED) \ - $(OBJECTS) $(OBJMOC) $(LIBS) && \ - mv $(SYSCONF_LINK_TARGET_SHARED) $(DESTDIR); \ - cd $(DESTDIR) && \ - rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN); \ - ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so; \ - ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ); \ - ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ).$(VER_MIN) - -# Linking static libraries -# - Build the $(TARGET) library, eg. lib$(TARGET).a -# - Place target in $(DESTDIR) - which has a trailing / -# -SYSCONF_AR = ar cqs -SYSCONF_LINK_TARGET_STATIC = lib$(TARGET).a -SYSCONF_LINK_LIB_STATIC = rm -f $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) ; \ - $(SYSCONF_AR) $(DESTDIR)$(SYSCONF_LINK_TARGET_STATIC) $(OBJECTS) $(OBJMOC) -# Compiling application source -SYSCONF_CXXFLAGS = -pipe -DQT_NO_COP -fno-exceptions -fno-rtti -O2 -Wall -W -SYSCONF_CFLAGS = -pipe -O2 -Wall -W -# Default link type (static linking is still be used where required) -SYSCONF_LINK_LIB = $(SYSCONF_LINK_LIB_SHARED) -SYSCONF_LINK_TARGET = $(SYSCONF_LINK_TARGET_SHARED) -# Compiling library source -SYSCONF_CXXFLAGS_LIB = -fPIC -SYSCONF_CFLAGS_LIB = -fPIC -# Compiling shared-object source -SYSCONF_CXXFLAGS_SHOBJ = -fPIC -SYSCONF_CFLAGS_SHOBJ = -fPIC -# Linking Qt -SYSCONF_LIBS_QTLIB = $(SYSCONF_LFLAGS_X11) $(QT_LIBS_MT) $(QT_LIBS_OPT) -# Linking Qt applications -SYSCONF_LIBS_QTAPP = diff --git a/core/pim/datebook/layoutmanager.cpp b/core/pim/datebook/layoutmanager.cpp deleted file mode 100644 index 23058ed..0000000 --- a/core/pim/datebook/layoutmanager.cpp +++ b/dev/null @@ -1,177 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#include "layoutmanager.h" - -static const int min_height = 15; - -LayoutItem::LayoutItem( const EffectiveEvent e ) : eevent(e) { } - -LayoutManager::LayoutManager(int w, int h) : width(w), height(h), maxWidth(w) { } - -LayoutManager::~LayoutManager() { } - -void LayoutManager::setSize(int w, int h) -{ - height = h; - maxWidth = width = w; - // with changed, re-init, re-layout items. - for (uint i = 0; i < mItems.count(); i++) - initializeGeometry(mItems.at(i)); -} - -void LayoutManager::setOccurances(QValueList<EffectiveEvent> &events) -{ - mItems.clear(); - - QValueListIterator<EffectiveEvent> it; - for ( it = events.begin(); it != events.end(); ++it ) { - addOccurance(*it); - } - layoutItems(TRUE); -} - -void LayoutManager::addOccurance(EffectiveEvent &event) -{ - LayoutItem *i = new LayoutItem(event); - initializeGeometry(i); - addItem(i); -} - -void LayoutManager::addItem(LayoutItem *i) -{ - mItems.resize(mItems.size() + 1); - mItems.insert(mItems.size() - 1, i); -} - -void LayoutManager::layoutItems(bool resetMaxWidth) -{ - if (resetMaxWidth) - maxWidth = width; - - int iCount = mItems.count(); - int itemWidth = QMIN(width, maxWidth); - int n = 1; - - if (width < 1) - return; - if (iCount < (width/4)) { - int i = 0; - while (i < iCount) { - LayoutItem *item = mItems.at(i); - int x = 0; - int xp = 0; - QRect geom = item->geometry(); - geom.setX( x ); - geom.setWidth(itemWidth); - while ( xp < n && intersects(item, geom)) { - x += itemWidth; - xp++; - geom.moveBy(itemWidth, 0); - } - if (xp >= n) { - n++; - itemWidth = QMIN(width / n, maxWidth); - i = 0; // Start again. - } else { - item->setGeometry( geom ); - i++; - } - } - } else { - // alturnate algorithm. // same as above, but just overlap - // if fail. - itemWidth = 4; - n = width / itemWidth; - int i = 0; - int rovingXp = 0; - while (i < iCount) { - LayoutItem *item = mItems.at(i); - int x = 0; - int xp = 0; - QRect geom = item->geometry(); - geom.setX( x ); - geom.setWidth(itemWidth); - while ( xp < n && intersects(item, geom)) { - x += itemWidth; - xp++; - geom.moveBy(itemWidth, 0); - } - if (xp >= n) { - geom.setX(rovingXp * itemWidth); - geom.setWidth(itemWidth); - rovingXp++; - item->setGeometry( geom ); - } else { - item->setGeometry( geom ); - } - i++; - } - } - if (itemWidth < maxWidth) - maxWidth = itemWidth; -} - -int LayoutManager::timeToHeight( const QTime &time ) const -{ - int y = time.hour() * 60 + time.minute(); - if (y) - y = (y * (height / 24)) / 60; - return y; -} - -QTime LayoutManager::heightToTime( int h ) const -{ - // broken - return QTime(0,0,0); -} - -LayoutItem *LayoutManager::intersects(LayoutItem *item, QRect geom) const -{ - int i = 0; - // allow overlapping - geom.moveBy(1,1); - geom.setSize( geom.size() - QSize(2,2) ); - - LayoutItem *it = mItems.at(i); - int count = mItems.count(); - while (i < count && it != item) { - if (it->geometry().intersects( geom ) ) - return it; - it = mItems.at(++i); - } - return 0; -} - -void LayoutManager::initializeGeometry(LayoutItem *item) -{ - int y = timeToHeight(item->occurance().start()); - int yend = timeToHeight(item->occurance().end()); - - int h = yend - y; - if (h < min_height) - h = min_height; - if (y + min_height > height) { - y = height - min_height; - h = min_height; - } - - item->setGeometry(QRect(0, y, width, h)); -} diff --git a/core/pim/datebook/layoutmanager.h b/core/pim/datebook/layoutmanager.h deleted file mode 100644 index 128f927..0000000 --- a/core/pim/datebook/layoutmanager.h +++ b/dev/null @@ -1,78 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#include <qvector.h> -#include <qvaluelist.h> -#include <qrect.h> -#include <qdatetime.h> -#include <qpe/event.h> - -class LayoutItem -{ -public: - LayoutItem( const EffectiveEvent e ); - - void setGeometry(const QRect &rect) { r = rect; } - void setGeometry(int x, int y, int w, int h) - { setGeometry(QRect(x,y,w,h)); } - QRect geometry() const { return r; } - - EffectiveEvent occurance() const { return eevent; } - Event event() const { return eevent.event(); } - -private: - EffectiveEvent eevent; - QRect r; -}; - -class LayoutManager -{ -public: - LayoutManager(int w, int h); - virtual ~LayoutManager(); - - void setSize(int w, int h); - void setMaximumColumnWidth(int x) { maxWidth = x; }; - int maximumColumnWidth() const { return maxWidth; }; - void setOccurances(QValueList<EffectiveEvent> &events); - virtual void addOccurance(EffectiveEvent &event); - - void clear() { mItems.clear(); } - - QVector<LayoutItem> items() const { return mItems; } - QSize size() const { return QSize(width, height); } - int count() const { return mItems.count(); } - - virtual void layoutItems(bool resetMaxWidth = FALSE); - - virtual int timeToHeight(const QTime &) const; - virtual QTime heightToTime(int) const; - -protected: - void initializeGeometry(LayoutItem *); - LayoutItem *intersects(LayoutItem *, QRect) const; - void addItem(LayoutItem *); - -private: - QVector<LayoutItem> mItems; - int width; - int height; - int maxWidth; -}; diff --git a/docs/inputmethodinterface.doc b/docs/inputmethodinterface.doc deleted file mode 100644 index 465182b..0000000 --- a/docs/inputmethodinterface.doc +++ b/dev/null @@ -1,49 +0,0 @@ -/*! \class InputMethodInterface inputmethodinterface.h - \brief The InputMethodInterface class provides an interface for Qtopia - input methods. - - Input methods must supply a QWidget that will be shown above the task bar - and emit a signal when a key is pressed: - - Input methods may be added to Qtopia via plugins. In order to write an - input method plugin you must create an interface to your input method by - deriving from the InputMethodInterface class and implementing the pure - virtual functions. - - See also: <a href=inputmethods.html>Input Method Tutorial</a> -*/ - - -/*! \fn QWidget *InputMethodInterface::inputMethod( QWidget *parent, Qt::WFlags f ) - - The inputMethod() function returns the input method widget. This - widget will be display just above the task bar when the user needs to input - text. You should always return the same widget if this function is called - multiple times. -*/ - -/*! \fn void InputMethodInterface::resetState() - - The resetState() function should return the input method to its default - state. -*/ - -/*! \fn QString InputMethodInterface::name() - - The name() function returns the name of the input method. This will - be displayed in the popup list of available input methods. -*/ - -/*! \fn QPixmap *InputMethodInterface::icon() - - The icon() function returns the icon for the input method. This will - be displayed in the taskbar when the input method is selected. -*/ - - -/*! \fn void InputMethodInterface::onKeyPress( QObject *receiver, const char *slot ) - - The onKeyPress() function must connect the supplied slot to the signal - that is emitted when a key press is generated. -*/ - diff --git a/examples/application/Example.png b/examples/application/Example.png Binary files differdeleted file mode 100644 index f63d0bc..0000000 --- a/examples/application/Example.png +++ b/dev/null diff --git a/examples/application/README b/examples/application/README deleted file mode 100644 index 63986f4..0000000 --- a/examples/application/README +++ b/dev/null @@ -1,2 +0,0 @@ -See /opt/Qtopia/doc/index.html for help. -See doc.trolltech.com for more recent documentation updates. diff --git a/examples/application/example.control b/examples/application/example.control deleted file mode 100644 index e79c6f6..0000000 --- a/examples/application/example.control +++ b/dev/null @@ -1,11 +0,0 @@ -Files: bin/example apps/Applications/example.desktop pics/Example.png help/html/example.html -Priority: optional -Section: qpe/applications -Maintainer: Your Name <you@your.domain.com> -Architecture: arm -Version: 1.0.0 -Depends: qpe-base ($QPE_VERSION) -License: Public Domain -Description: Example program - An example program for the Qtopia environment. - Does nothing interesting. diff --git a/examples/application/example.cpp b/examples/application/example.cpp deleted file mode 100644 index 1e0bbe9..0000000 --- a/examples/application/example.cpp +++ b/dev/null @@ -1,28 +0,0 @@ -#include "example.h" -#include <qpushbutton.h> - -/* - * Constructs a Example which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -Example::Example( QWidget* parent, const char* name, WFlags fl ) - : ExampleBase( parent, name, fl ) -{ - connect(quit, SIGNAL(clicked()), this, SLOT(goodBye())); -} - -/* - * Destroys the object and frees any allocated resources - */ -Example::~Example() -{ - // no need to delete child widgets, Qt does it all for us -} - -/* - * A simple slot... not very interesting. - */ -void Example::goodBye() -{ - close(); -} diff --git a/examples/application/example.desktop b/examples/application/example.desktop deleted file mode 100644 index f1e6f06..0000000 --- a/examples/application/example.desktop +++ b/dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Comment=An Example Program -Exec=example -Icon=Example -Type=Application -Name=Example diff --git a/examples/application/example.h b/examples/application/example.h deleted file mode 100644 index 24c58c0..0000000 --- a/examples/application/example.h +++ b/dev/null @@ -1,17 +0,0 @@ -#ifndef EXAMPLE_H -#define EXAMPLE_H -#include "examplebase.h" - -class Example : public ExampleBase -{ - Q_OBJECT - -public: - Example( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~Example(); - -private slots: - void goodBye(); -}; - -#endif // EXAMPLE_H diff --git a/examples/application/example.html b/examples/application/example.html deleted file mode 100644 index 9163573..0000000 --- a/examples/application/example.html +++ b/dev/null @@ -1,15 +0,0 @@ -<html> -<h1>Example</h1> - -<p>This is the help for the Example program. - -<p>To user this application: - -<ol> - <li>Press the <img width=12 height=12 src=Example.png> icon in the Qtopia launcher. - <li>Read the label. - <li>Press the button. - <li>Read the source code provided. -</ol> - -Now you know how to make a Qtopia application! diff --git a/examples/application/example.pro b/examples/application/example.pro deleted file mode 100644 index 2d89311..0000000 --- a/examples/application/example.pro +++ b/dev/null @@ -1,10 +0,0 @@ -TEMPLATE = app -#CONFIG = qt warn_on debug -CONFIG = qt warn_on release -HEADERS = example.h -SOURCES = main.cpp example.cpp -INCLUDEPATH += $(QPEDIR)/include -DEPENDPATH += $(QPEDIR)/include -LIBS += -lqpe -INTERFACES = examplebase.ui -TARGET = example diff --git a/examples/application/examplebase.ui b/examples/application/examplebase.ui deleted file mode 100644 index b47d20c..0000000 --- a/examples/application/examplebase.ui +++ b/dev/null @@ -1,55 +0,0 @@ -<!DOCTYPE UI><UI> -<class>ExampleBase</class> -<widget> - <class>QWidget</class> - <property stdset="1"> - <name>name</name> - <cstring>ExampleBase</cstring> - </property> - <property stdset="1"> - <name>geometry</name> - <rect> - <x>0</x> - <y>0</y> - <width>196</width> - <height>245</height> - </rect> - </property> - <property stdset="1"> - <name>caption</name> - <string>Example</string> - </property> - <vbox> - <property stdset="1"> - <name>margin</name> - <number>11</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>6</number> - </property> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel1</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string><p>This is just an <i>example</i>. It doesn't do anything interesting at all.</string> - </property> - </widget> - <widget> - <class>QPushButton</class> - <property stdset="1"> - <name>name</name> - <cstring>quit</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Quit</string> - </property> - </widget> - </vbox> -</widget> -</UI> diff --git a/examples/application/index.html b/examples/application/index.html deleted file mode 100644 index ad97378..0000000 --- a/examples/application/index.html +++ b/dev/null @@ -1,23 +0,0 @@ -<h1 align=center><small>Welcome to the</small><br>Qtopia SDK</h1> - -<h3>API Documentation</h3> -<p> -For API documentation, point a web browser at -/opt/Qtopia/doc/html/qtopia/index.html - -<h3>Application Documentation</h3> -Put English documentation for applications in: - -<p> - $QPEDIR/help/html/<i>appname</i>.html - -<p> -Put non-English documentation for applications in: - -<p> - $QPEDIR/help/<i>lang</i>/html/<i>appname</i>.html - -<p> -Where <i>lang</i> is the language specifier (eg. "de" for German), -and <i>appname</i> is the program name of your application. - diff --git a/examples/application/main.cpp b/examples/application/main.cpp deleted file mode 100644 index b705c44..0000000 --- a/examples/application/main.cpp +++ b/dev/null @@ -1,12 +0,0 @@ -#include "example.h" -#include <qpe/qpeapplication.h> - -int main( int argc, char ** argv ) -{ - QPEApplication a( argc, argv ); - - Example mw; - a.showMainWidget( &mw ); - - return a.exec(); -} diff --git a/examples/qpepim-addressbook/abexample.desktop b/examples/qpepim-addressbook/abexample.desktop deleted file mode 100644 index 24b44d1..0000000 --- a/examples/qpepim-addressbook/abexample.desktop +++ b/dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Comment=Simple QPEPIM Example -Exec=abexample -Icon=abexample -Type=Application -Name=AB QPEPIM diff --git a/examples/qpepim-addressbook/abexample.png b/examples/qpepim-addressbook/abexample.png Binary files differdeleted file mode 100644 index f63d0bc..0000000 --- a/examples/qpepim-addressbook/abexample.png +++ b/dev/null diff --git a/examples/qpepim-addressbook/addressbookdumper.cpp b/examples/qpepim-addressbook/addressbookdumper.cpp deleted file mode 100644 index c47e05c..0000000 --- a/examples/qpepim-addressbook/addressbookdumper.cpp +++ b/dev/null @@ -1,65 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#include <qpe/contact.h> -#include <qvaluelist.h> -#include "addressbookdumper.h" - -AddressBookDumper::AddressBookDumper(QWidget* parent) : QMultiLineEdit(parent) { - // connect(&m_ABAccess, SIGNAL(addressbookUpdated()), this, SLOT(abChanged())); -} - -AddressBookDumper::~AddressBookDumper() { -} - -void AddressBookDumper::abChanged() { - QString newText; - QValueList<Contact> contacts = m_ABAccess.contacts(); - QValueListConstIterator<Contact> it; - for (it = contacts.begin() ; it != contacts.end(); it++) { - newText.append((*it).firstName() + " " + (*it).lastName() + "\n"); - } - setText(newText); -} - -void AddressBookDumper::startBigEdit() { - if (m_ABAccess.startBlockEdit()) - qDebug("*** Block edit successfully started."); - else - qDebug("*** Block edit start failed."); -} - -void AddressBookDumper::endBigEdit() { - if (m_ABAccess.endBlockEdit()) - qDebug("*** Block edit successfully ended."); - else - qDebug("*** Block edit end failed."); -} - -void AddressBookDumper::addContact() { - Contact foo; - foo.setFirstName("Foo"); - foo.setLastName("Bar"); - foo.setFileAs(); - if (m_ABAccess.addContact(foo)) - qDebug("*** Add succeeded.."); - else - qDebug("*** Add failed.."); -} diff --git a/examples/qpepim-addressbook/addressbookdumper.h b/examples/qpepim-addressbook/addressbookdumper.h deleted file mode 100644 index cc83d32..0000000 --- a/examples/qpepim-addressbook/addressbookdumper.h +++ b/dev/null @@ -1,39 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#include <qmultilineedit.h> -#include <qpe/pim/addressbookaccess.h> - -class AddressBookDumper : public QMultiLineEdit { - Q_OBJECT - - public: - AddressBookDumper(QWidget* parent); - ~AddressBookDumper(); - - public slots: - void abChanged(); - void startBigEdit(); - void endBigEdit(); - void addContact(); - - private: - AddressBookAccess m_ABAccess; -}; diff --git a/examples/qpepim-addressbook/main.cpp b/examples/qpepim-addressbook/main.cpp deleted file mode 100644 index 590fffe..0000000 --- a/examples/qpepim-addressbook/main.cpp +++ b/dev/null @@ -1,47 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#include <qpe/qpeapplication.h> -#ifdef QWS -#include <qpe/qcopenvelope_qws.h> -#endif -#include <qapplication.h> -#include <qpe/pim/addressbookaccess.h> -#include "addressbookdumper.h" -#include <qvbox.h> -#include <qpushbutton.h> - -int main( int argc, char ** argv ) -{ - QPEApplication a( argc, argv ); - QVBox* vbox = new QVBox(0L); - QPushButton* clicker = new QPushButton("Refresh", vbox); - QPushButton* startBigEditButton = new QPushButton("Start Big Edit", vbox); - QPushButton* endBigEditButton = new QPushButton("End Big Edit", vbox); - QPushButton* addContactButton = new QPushButton("Add Contact", vbox); - AddressBookDumper* abDumper = new AddressBookDumper(vbox); - QObject::connect(clicker, SIGNAL(clicked()), abDumper, SLOT(abChanged())); - QObject::connect(startBigEditButton, SIGNAL(clicked()), abDumper, SLOT(startBigEdit())); - QObject::connect(endBigEditButton, SIGNAL(clicked()), abDumper, SLOT(endBigEdit())); - QObject::connect(addContactButton, SIGNAL(clicked()), abDumper, SLOT(addContact())); - a.setMainWidget(vbox); - vbox->show(); - return a.exec(); -} diff --git a/examples/qpepim-addressbook/qpepim-abexample.control b/examples/qpepim-addressbook/qpepim-abexample.control deleted file mode 100644 index 5a31c97..0000000 --- a/examples/qpepim-addressbook/qpepim-abexample.control +++ b/dev/null @@ -1,9 +0,0 @@ -Files: bin/abexample apps/Applications/abexample.desktop -Priority: optional -Section: qpe/applications -Maintainer: Warwick Allison <warwick@trolltech.com> -Architecture: arm -Version: $QPE_VERSION-1 -Depends: qpe-pim, qpe-base ($QPE_VERSION) -Description: Example Addressbook reader - Simple example for using the QPEPIM access library. diff --git a/examples/qpepim-addressbook/qpepim-addressbook.pro b/examples/qpepim-addressbook/qpepim-addressbook.pro deleted file mode 100644 index 7e918e0..0000000 --- a/examples/qpepim-addressbook/qpepim-addressbook.pro +++ b/dev/null @@ -1,8 +0,0 @@ -TEMPLATE = app -CONFIG = qt warn_on debug - -HEADERS = addressbookdumper.h -SOURCES = main.cpp addressbookdumper.cpp -TARGET = abexample -INCLUDEPATH = $(QPEDIR)/include -LIBS += -lqpepim -lqpe -lqte diff --git a/inputmethods/handwriting/qimpenchar.cpp b/inputmethods/handwriting/qimpenchar.cpp index 9c38ec9..152bfec 100644 --- a/inputmethods/handwriting/qimpenchar.cpp +++ b/inputmethods/handwriting/qimpenchar.cpp @@ -426,13 +426,13 @@ QIMPenCharMatchList QIMPenCharSet::match( QIMPenChar *ch ) } int err; if ( ch->penStrokes().count() <= tmplChar->penStrokes().count() ) { err = ch->match( tmplChar ); if ( err <= QIMPEN_MATCH_THRESHOLD ) { if (tmplChar->penStrokes().count() != ch->penStrokes().count()) - err = QIMPEN_MATCH_THRESHOLD; + err = QMIN(err*3, QIMPEN_MATCH_THRESHOLD); QIMPenCharMatchList::Iterator it; for ( it = matches.begin(); it != matches.end(); ++it ) { if ( (*it).penChar->character() == tmplChar->character() && (*it).penChar->penStrokes().count() == tmplChar->penStrokes().count() ) { if ( (*it).error > err ) (*it).error = err; diff --git a/library/alarmserver.h b/library/alarmserver.h index 665c3ae..f12a63d 100644 --- a/library/alarmserver.h +++ b/library/alarmserver.h @@ -25,11 +25,14 @@ class AlarmServer { public: static void addAlarm ( QDateTime when, const QCString& channel, const QCString& msg, int data=0); static void deleteAlarm (QDateTime when, const QCString& channel, const QCString& msg, int data=0); + +private: + friend int initApplication(int, char **); static void initialize(); }; #endif diff --git a/library/applnk.h b/library/applnk.h index c6f92a3..18e20b6 100644 --- a/library/applnk.h +++ b/library/applnk.h @@ -55,12 +55,14 @@ public: QString linkFile() const; QStringList mimeTypes() const { return mMimeTypes; } QStringList mimeTypeIcons() const { return mMimeTypeIcons; } const QArray<int> &categories() const; int id() const { return mId; } + bool linkFileKnown() const { return !mLinkFile.isNull(); } + void execute() const; void execute(const QStringList& args) const; void removeFiles(); void removeLinkFile(); void setName( const QString& docname ); @@ -93,12 +95,13 @@ protected: static int lastId; AppLnkPrivate *d; friend class AppLnkSet; virtual void invoke(const QStringList& args) const; bool ensureLinkExists() const; + void storeLink() const; }; class DocLnk : public AppLnk { public: DocLnk(); diff --git a/library/backend/categories.cpp b/library/backend/categories.cpp index 91331db..6e011c4 100644 --- a/library/backend/categories.cpp +++ b/library/backend/categories.cpp @@ -168,42 +168,12 @@ QStringList CategoryGroup::labels(const QArray<int> &catids ) const it != mIdLabelMap.end(); ++it ) if ( catids.find( it.key() ) != -1 ) labels += *it; return labels; } -QArray<int> CategoryGroup::ids( const QStringList &cats ) const -{ - QArray<int> results; - - for ( QStringList::ConstIterator catIt = cats.begin(); - catIt != cats.end(); ++catIt ) { - if ( *catIt == QObject::tr("All") || *catIt == QObject::tr("Unfiled") ) - continue; - int value = id( *catIt ); - if ( value != 0 ) { - int tmp = results.size(); - results.resize( tmp + 1 ); - results[ tmp ] = value; - } - } - - return results; -} - -QArray<int> CategoryGroup::ids() const -{ - QArray<int> results( mIdLabelMap.count() ); - int i = 0; - for ( QMap<int, QString>::ConstIterator it = mIdLabelMap.begin(); - it != mIdLabelMap.end(); ++it ) - results[i++] = it.key(); - - return results; -} - /*********************************************************** * * Categories * **********************************************************/ @@ -340,12 +310,20 @@ QStringList Categories::labels( const QString &app, bool includeGlobal, ExtraLabels extra ) const { QMap< QString, CategoryGroup >::ConstIterator appIt = mAppCats.find( app ); QStringList cats; + + if ( appIt != mAppCats.end() ) + cats += (*appIt).labels(); + else qDebug("Categories::labels didn't find app %s", app.latin1() ); + if ( includeGlobal ) + cats += mGlobalCats.labels(); + + cats.sort(); switch ( extra ) { case NoExtra: break; case AllUnfiled: cats.append( tr("All") ); cats.append( tr("Unfiled") ); break; @@ -353,20 +331,13 @@ QStringList Categories::labels( const QString &app, cats.append( tr("All") ); break; case UnfiledLabel: cats.append( tr("Unfiled") ); break; } - if ( appIt != mAppCats.end() ) - cats += (*appIt).labels(); - else qDebug("Categories::labels didn't find app %s", app.latin1() ); - if ( includeGlobal ) - cats += mGlobalCats.labels(); - // I don't think a sorted list is useful, the user might find prefer - // it in the original order. -// cats.sort(); + return cats; } QString Categories::label( const QString &app, int id ) const { if ( mGlobalCats.contains( id ) ) @@ -375,20 +346,12 @@ QString Categories::label( const QString &app, int id ) const appIt = mAppCats.find( app ); if ( appIt == mAppCats.end() ) return QString::null; return (*appIt).label( id ); } -QStringList Categories::labels( const QString & app, - const QArray<int> &catids ) const -{ - QStringList strs = mGlobalCats.labels( catids ); - strs += mAppCats[app].labels( catids ); - return strs; -} - /** Returns a single string associated with the cat ids for display in * a combobox or any area that requires one string. If catids are empty * then "Unfiled" will be returned. If multiple categories are assigned * the first cat id is shown with " (multi)" appended to the string. */ QString Categories::displaySingle( const QString &app, @@ -414,39 +377,27 @@ QString Categories::displaySingle( const QString &app, } } else r = strs.first(); return r; } -QArray<int> Categories::ids( const QString &app ) const -{ - QArray<int> allIds = mGlobalCats.ids(); - QArray<int> appIds = mAppCats[app].ids(); - - // we should make the guarentee that the ids are in the - // same order as the labels, (i.e. app cats then global) - // otherwise there is no point in having these two separate functions. - uint appSize = appIds.size(); - appIds.resize( appSize + allIds.size() ); - for ( uint i = appSize; i < appIds.size(); ++i ) - appIds[int(i)] = allIds[int(i - appSize)]; - - return appIds; -} - -QArray<int> Categories::ids( const QString &app, const QStringList &cats ) const +QArray<int> Categories::ids( const QString &app, const QStringList &labels) const { - QArray<int> allIds = mGlobalCats.ids( cats ); - QArray<int> appIds = mAppCats[app].ids( cats ); - - uint appSize = appIds.size(); - appIds.resize( appSize + allIds.size() ); - for ( uint i = appSize; i < appIds.size(); ++i ) - appIds[int(i)] = allIds[int(i - appSize)]; - - return appIds; + QArray<int> results; + QStringList::ConstIterator it; + int i; + + for ( i=0, it=labels.begin(); it!=labels.end(); i++, ++it ) { + int value = id( app, *it ); + if ( value != 0 ) { + int tmp = results.size(); + results.resize( tmp + 1 ); + results[ tmp ] = value; + } + } + return results; } int Categories::id( const QString &app, const QString &cat ) const { if ( cat == tr("Unfiled") || cat.contains( tr(" (multi.)") ) ) return 0; @@ -536,51 +487,76 @@ bool Categories::exists( const QString &appname, if ( appIt == mAppCats.end() ) return FALSE; return (*appIt).contains( catname ); } + bool Categories::save( const QString &fname ) const { - QFile file( fname ); - if ( !file.open( IO_WriteOnly ) ) { + QString strNewFile = fname + ".new"; + QFile f( strNewFile ); + QString out; + int total_written; + + if ( !f.open( IO_WriteOnly|IO_Raw ) ) { qWarning("Unable to write to %s", fname.latin1()); return FALSE; } - QTextStream ts( &file ); - ts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; - ts << "<!DOCTYPE CategoryList>" << endl; + out = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; + out += "<!DOCTYPE CategoryList>\n"; + + out += "<Categories>\n"; - ts << "<Categories>" << endl; for ( QMap<int, QString>::ConstIterator git = mGlobalCats.idMap().begin(); git != mGlobalCats.idMap().end(); ++git ) - ts << "<Category id=\"" << git.key() << "\"" - << " name=\"" << escapeString(*git) << "\" />" << endl; + out += "<Category id=\"" + QString::number(git.key()) + "\"" + + " name=\"" + escapeString(*git) + "\" />\n"; for ( QMap<QString, CategoryGroup>::ConstIterator appsIt=mAppCats.begin(); appsIt != mAppCats.end(); ++appsIt ) { const QString &app = appsIt.key(); const QMap<int, QString> &appcats = (*appsIt).idMap(); for ( QMap<int, QString>::ConstIterator appcatit = appcats.begin(); appcatit != appcats.end(); ++appcatit ) - ts << "<Category id=\"" << appcatit.key() << "\"" - << " app=\"" << escapeString(app) << "\"" - << " name=\"" << escapeString(*appcatit) << "\" />" << endl; + out += "<Category id=\"" + QString::number(appcatit.key()) + "\"" + + " app=\"" + escapeString(app) + "\"" + + " name=\"" + escapeString(*appcatit) + "\" />\n"; + } + out += "</Categories>\n"; + + QCString cstr = out.utf8(); + total_written = f.writeBlock( cstr.data(), cstr.length() ); + if ( total_written != int(cstr.length()) ) { + f.close(); + QFile::remove( strNewFile ); + return FALSE; + } + f.close(); + + if ( ::rename( strNewFile.latin1(), fname.latin1() ) < 0 ) { + qWarning( "problem renaming file %s to %s", + strNewFile.latin1(), fname.latin1()); + // remove the tmp file... + QFile::remove( strNewFile ); } - ts << "</Categories>" << endl; - file.close(); return TRUE; } bool Categories::load( const QString &fname ) { QFile file( fname ); if ( !file.open( IO_ReadOnly ) ) { qWarning("Unable to open %s", fname.latin1()); + + addGlobalCategory(tr("Business")); + addGlobalCategory(tr("Personal")); + save(fname); + return FALSE; } clear(); QByteArray ba = file.readAll(); QString data = QString::fromUtf8( ba.data(), ba.size() ); diff --git a/library/backend/categories.h b/library/backend/categories.h index 82d765b..ba65ee3 100644 --- a/library/backend/categories.h +++ b/library/backend/categories.h @@ -68,14 +68,13 @@ public: const QString &label(int id) const; /** Returns the uid associated with label or 0 if not found */ int id(const QString &label) const; /** Returns a sorted list of labels */ QStringList labels() const; - QArray<int> ids( const QStringList &cats ) const; - QArray<int> ids() const; + QStringList labels( const QArray<int> &catids ) const; const QMap<int, QString> &idMap() const { return mIdLabelMap; } private: void insert( int uid, const QString &label ); @@ -127,15 +126,14 @@ public: bool removeCategory( const QString &appName, const QString &catName, bool checkGlobal = TRUE); bool removeCategory( const QString &appName, int uid ); bool removeGlobalCategory( const QString &catName ); bool removeGlobalCategory( int uid ); - QArray<int> ids( const QString &app ) const; - QArray<int> ids( const QString &app, - const QStringList &cats ) const; + QArray<int> ids( const QString &app, const QStringList &labels) const; + /** Returns the id associated with the app */ int id( const QString &app, const QString &cat ) const; /** Returns the label associated with the id */ QString label( const QString &app, int id ) const; enum ExtraLabels { NoExtra, AllUnfiled, AllLabel, UnfiledLabel }; @@ -150,16 +148,12 @@ public: * If extra = UnfiledLabel, then Unfiled is prepended */ QStringList labels( const QString &app, bool includeGlobal = TRUE, ExtraLabels extra = NoExtra ) const; - /** Returns the labels of the categories associated with the uids */ - QStringList labels( const QString & app, - const QArray<int> &catids ) const; - enum DisplaySingle { ShowMulti, ShowAll, ShowFirst }; /** Returns a single string associated with the cat ids for display in * a combobox or any area that requires one string. If catids are empty * then "Unfiled" will be returned. If multiple categories are assigned * then the behavior depends on the DisplaySingle type. diff --git a/library/backend/contact.cpp b/library/backend/contact.cpp index a5f10ab..b10b19a 100644 --- a/library/backend/contact.cpp +++ b/library/backend/contact.cpp @@ -15,15 +15,17 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#define QTOPIA_INTERNAL_CONTACT_MRE + #include "contact.h" -#include "vobject_p.h"
-#include "qfiledirect_p.h"
+#include "vobject_p.h" +#include "qfiledirect_p.h" #include <qpe/stringutil.h> #include <qpe/timeconversion.h> #include <qobject.h> #include <qregexp.h> @@ -383,51 +385,55 @@ QStringList Contact::fields() list.append( "FirstName" ); list.append( "MiddleName" ); list.append( "LastName" ); list.append( "Suffix" ); list.append( "FileAs" ); + list.append( "JobTitle" ); + list.append( "Department" ); + list.append( "Company" ); + list.append( "BusinessPhone" ); + list.append( "BusinessFax" ); + list.append( "BusinessMobile" ); + list.append( "DefaultEmail" ); list.append( "Emails" ); - list.append( "HomeStreet" ); - list.append( "HomeCity" ); - list.append( "HomeState" ); - list.append( "HomeZip" ); - list.append( "HomeCountry" ); list.append( "HomePhone" ); list.append( "HomeFax" ); list.append( "HomeMobile" ); - list.append( "HomeWebPage" ); - list.append( "Company" ); list.append( "BusinessStreet" ); list.append( "BusinessCity" ); list.append( "BusinessState" ); list.append( "BusinessZip" ); list.append( "BusinessCountry" ); + list.append( "BusinessPager" ); list.append( "BusinessWebPage" ); - list.append( "JobTitle" ); - list.append( "Department" ); + list.append( "Office" ); - list.append( "BusinessPhone" ); - list.append( "BusinessFax" ); - list.append( "BusinessMobile" ); - list.append( "BusinessPager" ); list.append( "Profession" ); list.append( "Assistant" ); list.append( "Manager" ); + list.append( "HomeStreet" ); + list.append( "HomeCity" ); + list.append( "HomeState" ); + list.append( "HomeZip" ); + list.append( "HomeCountry" ); + list.append( "HomeWebPage" ); + list.append( "Spouse" ); list.append( "Gender" ); list.append( "Birthday" ); list.append( "Anniversary" ); list.append( "Nickname" ); - list.append( "Children" ); + list.append( "Notes" ); + list.append( "Groups" ); return list; } QStringList Contact::trfields() { @@ -437,51 +443,55 @@ QStringList Contact::trfields() list.append( QObject::tr( "First Name" ) ); list.append( QObject::tr( "Middle Name" ) ); list.append( QObject::tr( "Last Name" ) ); list.append( QObject::tr( "Suffix" ) ); list.append( QObject::tr( "File As" ) ); + list.append( QObject::tr( "Job Title" ) ); + list.append( QObject::tr( "Department" ) ); + list.append( QObject::tr( "Company" ) ); + list.append( QObject::tr( "Business Phone" ) ); + list.append( QObject::tr( "Business Fax" ) ); + list.append( QObject::tr( "Business Mobile" ) ); + list.append( QObject::tr( "Default Email" ) ); list.append( QObject::tr( "Emails" ) ); - list.append( QObject::tr( "Home Street" ) ); - list.append( QObject::tr( "Home City" ) ); - list.append( QObject::tr( "Home State" ) ); - list.append( QObject::tr( "Home Zip" ) ); - list.append( QObject::tr( "Home Country" ) ); list.append( QObject::tr( "Home Phone" ) ); list.append( QObject::tr( "Home Fax" ) ); list.append( QObject::tr( "Home Mobile" ) ); - list.append( QObject::tr( "Home Web Page" ) ); - list.append( QObject::tr( "Company" ) ); list.append( QObject::tr( "Business Street" ) ); list.append( QObject::tr( "Business City" ) ); list.append( QObject::tr( "Business State" ) ); list.append( QObject::tr( "Business Zip" ) ); list.append( QObject::tr( "Business Country" ) ); + list.append( QObject::tr( "Business Pager" ) ); list.append( QObject::tr( "Business WebPage" ) ); - list.append( QObject::tr( "Job Title" ) ); - list.append( QObject::tr( "Department" ) ); + list.append( QObject::tr( "Office" ) ); - list.append( QObject::tr( "Business Phone" ) ); - list.append( QObject::tr( "Business Fax" ) ); - list.append( QObject::tr( "Business Mobile" ) ); - list.append( QObject::tr( "Business Pager" ) ); list.append( QObject::tr( "Profession" ) ); list.append( QObject::tr( "Assistant" ) ); list.append( QObject::tr( "Manager" ) ); + list.append( QObject::tr( "Home Street" ) ); + list.append( QObject::tr( "Home City" ) ); + list.append( QObject::tr( "Home State" ) ); + list.append( QObject::tr( "Home Zip" ) ); + list.append( QObject::tr( "Home Country" ) ); + list.append( QObject::tr( "Home Web Page" ) ); + list.append( QObject::tr( "Spouse" ) ); list.append( QObject::tr( "Gender" ) ); list.append( QObject::tr( "Birthday" ) ); list.append( QObject::tr( "Anniversary" ) ); list.append( QObject::tr( "Nickname" ) ); - list.append( QObject::tr( "Children" ) ); + list.append( QObject::tr( "Notes" ) ); + list.append( QObject::tr( "Groups" ) ); return list; } void Contact::setEmails( const QString &v ) { @@ -626,13 +636,13 @@ static Contact parseVObject( VObject *obj ) QCString value = vObjectStringZValue( o ); if ( name == VCNameProp ) { VObjectIterator nit; initPropIterator( &nit, o ); while( moreIteration( &nit ) ) { VObject *o = nextVObject( &nit ); - QCString name = vObjectName( o ); + QCString name = vObjectTypeInfo( o ); QString value = vObjectStringZValue( o ); if ( name == VCNamePrefixesProp ) c.setTitle( value ); else if ( name == VCNameSuffixesProp ) c.setSuffix( value ); else if ( name == VCFamilyNameProp ) @@ -699,13 +709,13 @@ static Contact parseVObject( VObject *obj ) int type = 0; VObjectIterator nit; initPropIterator( &nit, o ); while( moreIteration( &nit ) ) { VObject *o = nextVObject( &nit ); - QCString name = vObjectName( o ); + QCString name = vObjectTypeInfo( o ); if ( name == VCHomeProp ) type |= HOME; else if ( name == VCWorkProp ) type |= WORK; else if ( name == VCVoiceProp ) type |= VOICE; @@ -746,13 +756,13 @@ static Contact parseVObject( VObject *obj ) QString email = vObjectStringZValue( o ); bool valid = TRUE; VObjectIterator nit; initPropIterator( &nit, o ); while( moreIteration( &nit ) ) { VObject *o = nextVObject( &nit ); - QCString name = vObjectName( o ); + QCString name = vObjectTypeInfo( o ); if ( name != VCInternetProp && name != VCHomeProp && name != VCWorkProp && name != VCPreferredProp ) // ### preffered should map to default email valid = FALSE; } @@ -769,13 +779,13 @@ static Contact parseVObject( VObject *obj ) } else if ( name == VCURLProp ) { VObjectIterator nit; initPropIterator( &nit, o ); while( moreIteration( &nit ) ) { VObject *o = nextVObject( &nit ); - QCString name = vObjectName( o ); + QCString name = vObjectTypeInfo( o ); if ( name == VCHomeProp ) c.setHomeWebpage( value ); else if ( name == VCWorkProp ) c.setBusinessWebpage( value ); } } @@ -839,35 +849,35 @@ static Contact parseVObject( VObject *obj ) } c.setFileAs(); return c; } void Contact::writeVCard( const QString &filename, const QValueList<Contact> &contacts) -{
- QFileDirect f( filename.utf8().data() );
- if ( !f.open( IO_WriteOnly ) ) {
- qWarning("Unable to open vcard write");
- return;
- }
+{ + QFileDirect f( filename.utf8().data() ); + if ( !f.open( IO_WriteOnly ) ) { + qWarning("Unable to open vcard write"); + return; + } QValueList<Contact>::ConstIterator it; for( it = contacts.begin(); it != contacts.end(); ++it ) { VObject *obj = createVObject( *it ); writeVObject(f.directHandle() , obj ); cleanVObject( obj ); } cleanStrTbl(); } void Contact::writeVCard( const QString &filename, const Contact &contact) -{
- QFileDirect f( filename.utf8().data() );
- if ( !f.open( IO_WriteOnly ) ) {
- qWarning("Unable to open vcard write");
- return;
- }
+{ + QFileDirect f( filename.utf8().data() ); + if ( !f.open( IO_WriteOnly ) ) { + qWarning("Unable to open vcard write"); + return; + } VObject *obj = createVObject( contact ); writeVObject( f.directHandle() , obj ); cleanVObject( obj ); cleanStrTbl(); @@ -891,12 +901,17 @@ QValueList<Contact> Contact::readVCard( const QString &filename ) cleanVObject( t ); } return contacts; } +bool Contact::match( const QString ®exp ) const +{ + return match(QRegExp(regexp)); +} + bool Contact::match( const QRegExp &r ) const { bool match; match = false; QMap<int, QString>::ConstIterator it; for ( it = mMap.begin(); it != mMap.end(); ++it ) { diff --git a/library/backend/contact.h b/library/backend/contact.h index 6abdab6..a74cbbe 100644 --- a/library/backend/contact.h +++ b/library/backend/contact.h @@ -98,13 +98,18 @@ public: void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } void setChildren( const QString &v ); // other void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } - bool match( const QRegExp &r ) const; + bool match( const QString ®exp ) const; + +// DON'T ATTEMPT TO USE THIS +#ifdef QTOPIA_INTERNAL_CONTACT_MRE + bool match( const QRegExp ®exp ) const; +#endif // // custom // void setCustomField( const QString &key, const QString &v ) // { replace(Custom- + key, v ); } // name diff --git a/library/backend/event.h b/library/backend/event.h index 0ebe9ea..277aadd 100644 --- a/library/backend/event.h +++ b/library/backend/event.h @@ -137,13 +137,18 @@ private: QString tz; bool hAlarm, hRepeat; int aMinutes; SoundTypeChoice aSound; RepeatPattern pattern; QString note; + // ADDITION + int mRid; // Recode ID + int mRinfo; // Recode Info + // EventPrivate *d; + }; // Since an event spans multiple day, it is better to have this // class to represent a day instead of creating many // dummy events... diff --git a/library/backend/recordfields.h b/library/backend/recordfields.h index 3cddde2..4196c8b 100644 --- a/library/backend/recordfields.h +++ b/library/backend/recordfields.h @@ -28,77 +28,88 @@ namespace Qtopia static const int UID_ID = 0; static const int CATEGORY_ID = 1; enum AddressBookFields { AddressUid = UID_ID, AddressCategory = CATEGORY_ID, - + + // NOTE: Order of fields dependency in backend/contact.cpp + Title, FirstName, MiddleName, LastName, Suffix, FileAs, + JobTitle, + Department, + Company, + BusinessPhone, + BusinessFax, + BusinessMobile, + // email DefaultEmail, Emails, - // home - HomeStreet, - HomeCity, - HomeState, - HomeZip, - HomeCountry, HomePhone, HomeFax, HomeMobile, - HomeWebPage, // business - Company, BusinessStreet, BusinessCity, BusinessState, BusinessZip, BusinessCountry, + BusinessPager, BusinessWebPage, - JobTitle, - Department, + Office, - BusinessPhone, - BusinessFax, - BusinessMobile, - BusinessPager, Profession, Assistant, Manager, + // home + HomeStreet, + HomeCity, + HomeState, + HomeZip, + HomeCountry, + HomeWebPage, + //personal Spouse, Gender, Birthday, Anniversary, Nickname, Children, // other Notes, Groups + + ,rid, + rinfo }; // dataset = "todolist" enum TaskFields { TaskUid = UID_ID, TaskCategory = CATEGORY_ID, HasDate, Completed, TaskDescription, Priority, - Date + Date, + + TaskRid, + TaskRinfo }; // dataset = "categories" for todos enum CategoryFields { CatUid = UID_ID, CatName, @@ -125,11 +136,14 @@ namespace Qtopia RepeatPatternType, RepeatPatternFrequency, RepeatPatternPosition, RepeatPatternDays, RepeatPatternHasEndDate, RepeatPatternEndDate, + + DateBookRid, + DateBookRinfo }; }; #endif diff --git a/library/backend/task.h b/library/backend/task.h index ffe26b0..6f383b8 100644 --- a/library/backend/task.h +++ b/library/backend/task.h @@ -69,9 +69,13 @@ private: bool mDue; QDate mDueDate; bool mCompleted; int mPriority; QString mDesc; TaskPrivate *d; + // ADDITION + int recordId; + int recordInfo; + // }; #endif diff --git a/library/backend/vobject.cpp b/library/backend/vobject.cpp index af112a7..9c2ba3b 100644 --- a/library/backend/vobject.cpp +++ b/library/backend/vobject.cpp @@ -1204,7 +1204,16 @@ DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list) while (list) {
writeVObject(f.directHandle(),list);
list = nextVObjectInList(list);
}
}
+DLLEXPORT(const char *) vObjectTypeInfo(VObject *o)
+{
+ const char *type = vObjectName( o );
+ if ( strcmp( type, "TYPE" ) == 0 )
+ type = vObjectStringZValue( o );
+ return type;
+}
+
+
// end of source file vobject.c
diff --git a/library/backend/vobject_p.h b/library/backend/vobject_p.h index b6a2c0a..a0d921e 100644 --- a/library/backend/vobject_p.h +++ b/library/backend/vobject_p.h @@ -393,9 +393,12 @@ will get a link error. #if INCLUDEMFC
extern VObject* Parse_MIME_FromFile(CFile *file);
#else
extern VObject* Parse_MIME_FromFile(FILE *file);
#endif
+extern DLLEXPORT(const char *) vObjectTypeInfo(VObject *o);
+
+
#endif /* __VOBJECT_H__ */
diff --git a/library/categoryedit_p.cpp b/library/categoryedit_p.cpp index 06e5fec..07e707e 100644 --- a/library/categoryedit_p.cpp +++ b/library/categoryedit_p.cpp @@ -72,15 +72,17 @@ void CategoryEdit::setCategories( const QArray<int> &recCats, const QString &appName, const QString &visibleName ) { if ( !d ) d = new CategoryEditPrivate( (QWidget*)parent(), name() ); d->mStrApp = appName; d->mVisible = visibleName; - QArray<int> cats = d->mCategories.ids( d->mStrApp ); - lvView->clear(); + QStringList appCats = d->mCategories.labels( d->mStrApp ); + QArray<int> cats = d->mCategories.ids(d->mStrApp, appCats); + lvView->clear(); + QStringList::ConstIterator it; int i, j; for ( i = 0, it = appCats.begin(); it != appCats.end(); i++, ++it ) { QCheckListItem *chk; chk = new QCheckListItem( lvView, (*it), QCheckListItem::CheckBox ); if ( !d->mCategories.isGlobal((*it)) ) diff --git a/library/categoryselect.cpp b/library/categoryselect.cpp index dc5d1fa..21b3f91 100644 --- a/library/categoryselect.cpp +++ b/library/categoryselect.cpp @@ -16,20 +16,30 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qpe/categories.h> +#include <qpe/palmtoprecord.h> -#include <qdialog.h> +#include <qmessagebox.h> #include <qlayout.h> #include <qtoolbutton.h> +#include <qfile.h> #include "categorywidget.h" #include "categoryselect.h" +#include <stdlib.h> + +static QString categoryEdittingFileName() +{ + QString str = getenv("HOME"); + str +="/.cateditting"; + return str; +} class CategoryComboPrivate { public: CategoryComboPrivate(QObject *o) : mCat( o ) @@ -54,16 +64,18 @@ public: } QArray<int> mRec; bool usingAll; QString mVisibleName; }; -CategoryCombo::CategoryCombo( QWidget *parent, const char *name ) +CategoryCombo::CategoryCombo( QWidget *parent, const char *name , int width) : QComboBox( parent, name ) { d = new CategoryComboPrivate(this); + if (width) + setFixedWidth(width); } void CategoryCombo::initCombo( const QArray<int> &recCats, const QString &appName ) { initCombo( recCats, appName, appName ); @@ -75,31 +87,33 @@ void CategoryCombo::initCombo( const QArray<int> &recCats, { d->mStrAppName = appName; d->mStrVisibleName = visibleName; clear(); QStringList slApp; + QObject::disconnect( this, SIGNAL(activated(int)), + this, SLOT(slotValueChanged(int)) ); + QObject::connect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); bool loadOk = d->mCat.load( categoryFileName() ); slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel ); - d->mAppCats = d->mCat.ids( d->mStrAppName ); + + d->mAppCats = d->mCat.ids( d->mStrAppName, slApp); int i, j, saveMe, recCount; QStringList::Iterator it; // now add in all the items... recCount = recCats.count(); saveMe = -1; if ( recCount > 1 && loadOk ) { it = slApp.begin(); - insertItem( *it ); - ++it; - for ( j = 0; it != slApp.end(); ++it, j++ ) { + for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) { // grr... we have to go through and compare... if ( j < int(d->mAppCats.size()) ) { for ( i = 0; i < recCount; i++ ) { if ( recCats[i] == d->mAppCats[j] ) { (*it).append( tr(" (Multi.)") ); if ( saveMe < 0 ) @@ -108,44 +122,143 @@ void CategoryCombo::initCombo( const QArray<int> &recCats, break; } } } insertItem( *it ); } + insertItem( *it ); } else insertStringList( slApp ); if ( recCount > 0 && loadOk ) { for ( i = 0; i < int(d->mAppCats.size()); i++ ) { if ( d->mAppCats[i] == recCats[0] ) { - setCurrentItem( i + 1 ); + setCurrentItem( i ); + break; + } + } + } else + { + setCurrentItem( slApp.count()-1 ); // unfiled + } +} + +// this is a new function by SHARP instead of initCombo() +QArray<int> CategoryCombo::initComboWithRefind( const QArray<int> &recCats, + const QString &appName) +{ + QString visibleName = appName; + d->mStrAppName = appName; + d->mStrVisibleName = visibleName; + clear(); + QStringList slApp; + QArray<int> results; + + QObject::disconnect( this, SIGNAL(activated(int)), + this, SLOT(slotValueChanged(int)) ); + + QObject::connect( this, SIGNAL(activated(int)), + this, SLOT(slotValueChanged(int)) ); + bool loadOk = d->mCat.load( categoryFileName() ); + slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel ); + + d->mAppCats = d->mCat.ids( d->mStrAppName, slApp); + + // addition part + // make new recCats + if (loadOk){ + int i,j; + int value; + int rCount = recCats.count(); + int mCount = d->mAppCats.count(); + + for (i=0; i<rCount; i++){ + value = 0; + for (j=0; j<mCount; j++){ + if (recCats[i] == d->mAppCats[j]){ + value = recCats[i]; + break; + } + } + if (value != 0){ + int tmp = results.size(); + results.resize( tmp + 1 ); + results[ tmp ] = value; + } + } + } + else{ + results = recCats; + } + // addition end + + int i, + j, + saveMe, + recCount; + QStringList::Iterator it; + // now add in all the items... + recCount = results.count(); + saveMe = -1; + if ( recCount > 1 && loadOk ) { + it = slApp.begin(); + for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) { + + // grr... we have to go through and compare... + if ( j < int(d->mAppCats.size()) ) { + for ( i = 0; i < recCount; i++ ) { + if ( results[i] == d->mAppCats[j] ) { + (*it).append( tr(" (Multi.)") ); + if ( saveMe < 0 ) + saveMe = j; + // no need to continue through the list. + break; + } + } + } + insertItem( *it ); + } + insertItem( *it ); + } else + insertStringList( slApp ); + + if ( recCount > 0 && loadOk ) { + for ( i = 0; i < int(d->mAppCats.size()); i++ ) { + if ( d->mAppCats[i] == results[0] ) { + setCurrentItem( i ); break; } } } else - setCurrentItem( 0 ); // unfiled + { + setCurrentItem( slApp.count()-1 ); // unfiled + } +/* QObject::connect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); +*/ + return results; } + CategoryCombo::~CategoryCombo() { delete d; } int CategoryCombo::currentCategory() const { int returnMe; returnMe = currentItem(); - // unfiled is now 0... - if ( returnMe == 0 ) + + if ( returnMe == (int)d->mAppCats.count() ) returnMe = -1; else if ( returnMe > (int)d->mAppCats.count() ) // only happen on "All" returnMe = -2; else - returnMe = d->mAppCats[returnMe - 1]; + returnMe = d->mAppCats[returnMe]; return returnMe; } void CategoryCombo::setCurrentCategory( int newCatUid ) { int i; @@ -170,50 +283,63 @@ void CategoryCombo::setCurrentText( const QString &str ) void CategoryCombo::slotValueChanged( int ) { emit sigCatChanged( currentCategory() ); } -CategorySelect::CategorySelect( QWidget *parent, const char *name ) +CategorySelect::CategorySelect( QWidget *parent, const char *name,int width) : QHBox( parent, name ), cmbCat( 0 ), cmdCat( 0 ), d( 0 ) { d = new CategorySelectPrivate(); - init(); + init(width); } CategorySelect::CategorySelect( const QArray<int> &vl, const QString &appName, QWidget *parent, - const char *name ) + const char *name ,int width) : QHBox( parent, name ) { d = new CategorySelectPrivate( vl ); - init(); + + init(width); + setCategories( vl, appName, appName ); } CategorySelect::CategorySelect( const QArray<int> &vl, const QString &appName, const QString &visibleName, - QWidget *parent, const char *name ) + QWidget *parent, const char *name , int width) : QHBox( parent, name ) { d = new CategorySelectPrivate( vl ); - init(); + init(width); setCategories( vl, appName, visibleName ); } CategorySelect::~CategorySelect() { delete d; } void CategorySelect::slotDialog() { + if (QFile::exists( categoryEdittingFileName() )){ + QMessageBox::warning(this,tr("Error"), + tr("Sorry, another application is\nediting categories.") ); + return; + } + + QFile f( categoryEdittingFileName() ); + if ( !f.open( IO_WriteOnly) ){ + return; + } + QDialog editDlg( this, 0, TRUE ); editDlg.setCaption( tr("Edit Categories") ); QVBoxLayout *vb = new QVBoxLayout( &editDlg ); QScrollView *sv = new QScrollView( &editDlg ); sv->setResizePolicy( QScrollView::AutoOneFit ); sv->setHScrollBarMode( QScrollView::AlwaysOff ); @@ -223,12 +349,15 @@ void CategorySelect::slotDialog() editDlg.showMaximized(); if ( editDlg.exec() ) { d->mRec = ce.newCategories(); cmbCat->initCombo( d->mRec, mStrAppName ); } + + f.close(); + QFile::remove( categoryEdittingFileName() ); } void CategorySelect::slotNewCat( int newUid ) { if ( newUid != -1 ) { bool alreadyIn = false; @@ -244,31 +373,32 @@ void CategorySelect::slotNewCat( int newUid ) } } else d->mRec.resize(0); // now Unfiled. emit signalSelected( currentCategory() ); } -void CategorySelect::setCategories( const QArray<int> &rec, +QString CategorySelect::setCategories( const QArray<int> &rec, const QString &appName ) { - setCategories( rec, appName, appName ); + return setCategories( rec, appName, appName ); } -void CategorySelect::setCategories( const QArray<int> &rec, +QString CategorySelect::setCategories( const QArray<int> &rec, const QString &appName, const QString &visibleName ) { - d->mRec = rec; d->mVisibleName = visibleName; mStrAppName = appName; - cmbCat->initCombo( rec, appName ); + d->mRec = cmbCat->initComboWithRefind( rec, appName ); + return Qtopia::Record::idsToString(d->mRec); } -void CategorySelect::init() +void CategorySelect::init(int width) { - cmbCat = new CategoryCombo( this ); + cmbCat = new CategoryCombo( this, 0, width); + QObject::connect( cmbCat, SIGNAL(sigCatChanged(int)), this, SLOT(slotNewCat(int)) ); cmdCat = new QToolButton( this ); QObject::connect( cmdCat, SIGNAL(clicked()), this, SLOT(slotDialog()) ); cmdCat->setTextLabel( "...", FALSE ); cmdCat->setUsesTextLabel( true ); @@ -310,6 +440,13 @@ void CategorySelect::setAllCategories( bool add ) if ( add ) { cmbCat->insertItem( tr( "All" ), cmbCat->count() ); cmbCat->setCurrentItem( cmbCat->count() - 1 ); } else cmbCat->removeItem( cmbCat->count() - 1 ); } + +// 01.12.21 added +void CategorySelect::setFixedWidth(int width) +{ + width -= cmdCat->width(); + cmbCat->setFixedWidth(width); +} diff --git a/library/categoryselect.h b/library/categoryselect.h index 5c6b565..7a8e491 100644 --- a/library/categoryselect.h +++ b/library/categoryselect.h @@ -33,22 +33,25 @@ class QToolButton; class CategoryComboPrivate; class CategoryCombo : public QComboBox { Q_OBJECT public: - CategoryCombo( QWidget *parent, const char* name = 0 ); + CategoryCombo( QWidget *parent, const char* name = 0, int width=0); + ~CategoryCombo(); int currentCategory() const; void setCurrentCategory( int id ); // depreciated. void initCombo( const QArray<int> &recCats, const QString &appName ); void initCombo( const QArray<int> &recCats, const QString &appName, const QString &visibleName /* = appName */ ); + QArray<int> initComboWithRefind( const QArray<int> &recCats, const QString &appName ); + signals: void sigCatChanged( int newUid ); private slots: void slotValueChanged( int ); @@ -62,44 +65,49 @@ private: class CategorySelectPrivate; class CategorySelect : public QHBox { Q_OBJECT public: // we need two constructors, the first gets around designer limitations - CategorySelect( QWidget *parent = 0, const char *name = 0 ); + + CategorySelect( QWidget *parent = 0, const char *name = 0, int width = 0 ); CategorySelect( const QArray<int> &vlCats, const QString &appName, - QWidget *parent = 0, const char *name = 0 ); + QWidget *parent = 0, const char *name = 0, + int width = 0); CategorySelect( const QArray<int> &vlCats, const QString &appName, const QString &visibleName, QWidget *parent = 0, - const char *name = 0 ); + const char *name = 0 , int width = 0); + ~CategorySelect(); const QArray<int> ¤tCategories() const; int currentCategory() const; void setCurrentCategory( int newCatUid ); // pretty much if you don't set it the constructor, you need to // call it here ASAP! // however this call is depreciated... - void setCategories( const QArray<int> &vlCats, const QString &appName ); - // use this one instead (for translating ) - void setCategories( const QArray<int> &vlCats, const QString &appName, - const QString &visibleName ); + QString setCategories( const QArray<int> &vlCats, const QString &appName ); + QString setCategories( const QArray<int> &vlCats, const QString &appName, + const QString &visibleName ); // these were added for find dialog. void setRemoveCategoryEdit( bool remove ); void setAllCategories( bool add ); + void setFixedWidth(int width); signals: void signalSelected( int ); private slots: void slotDialog(); + +public slots: void slotNewCat( int id ); private: - void init(); + void init(int width=0); QString mStrAppName; CategoryCombo *cmbCat; QToolButton *cmdCat; CategorySelectPrivate *d; }; diff --git a/library/config.cpp b/library/config.cpp index 9634571..e07eecb 100644 --- a/library/config.cpp +++ b/library/config.cpp @@ -30,13 +30,15 @@ #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> +#define QTOPIA_INTERNAL_LANGLIST #include "config.h" +#include "global.h" /*! \internal */ QString Config::configFilename(const QString& name, Domain d) @@ -92,20 +94,15 @@ QString Config::configFilename(const QString& name, Domain d) */ Config::Config( const QString &name, Domain domain ) : filename( configFilename(name,domain) ) { git = groups.end(); read(); - - lang = getenv("LANG"); - int i = lang.find("."); - if ( i > 0 ) - lang = lang.left( i ); - i = lang.find( "_" ); - if ( i > 0 ) - glang = lang.left(i); + QStringList l = Global::languageList(); + lang = l[0]; + glang = l[1]; } /*! Writes any changes to disk and destroys the in-memory object. */ Config::~Config() diff --git a/library/custom-linux-sharp-g++.h b/library/custom-linux-sharp-g++.h deleted file mode 100644 index f65d474..0000000 --- a/library/custom-linux-sharp-g++.h +++ b/dev/null @@ -1,147 +0,0 @@ -/********************************************************************** -** 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 QPE_OWNAPM -#define QPE_HAVE_TOGGLELIGHT -#define QPE_NOCIBAUD -#define QPE_STARTMENU -#include <asm/sharp_apm.h> -#ifndef APM_IOC_BATTERY_BACK_CHK -#define APM_IOC_BATTERY_BACK_CHK _IO(APM_IOC_MAGIC, 32) -#endif -#ifndef APM_IOC_BATTERY_MAIN_CHK -#define APM_IOC_BATTERY_MAIN_CHK _IO(APM_IOC_MAGIC, 33) -#endif - -#include <unistd.h> -#include <stdio.h> -#include <signal.h> -#include <fcntl.h> -#include <sys/ioctl.h> - -#define SHARP_DEV_IOCTL_COMMAND_START 0x5680 - -/* --- for SHARP_BUZZER device --- */ -#define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) -#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) -#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) -#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) -#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) -#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) -#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) - -#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ -#define SHARP_BUZ_KEYSOUND 2 /* key sound */ -#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ -#define SHARP_PDA_WARNSOUND 4 /* warning occurred */ -#define SHARP_PDA_ERRORSOUND 5 /* error occurred */ -#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ -#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ -#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ -#define SHARP_PDA_APPSTART 9 /* application start */ -#define SHARP_PDA_APPQUIT 10 /* application ends */ -#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ -#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ -#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ -#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ - - -#define CUSTOM_BUZZER( sound ) \ -{ \ - static int fd = open( "/dev/sharp_buz", O_RDWR|O_NONBLOCK ); \ - ioctl( fd, SHARP_BUZZER_MAKESOUND, sound ); \ -} - -#define CUSTOM_SOUND_ALARM CUSTOM_BUZZER( SHARP_BUZ_SCHEDULE_ALARM ) - -#include <sys/ioctl.h> -#include <asm/sharp_char.h> - -// a bit awkward, as this value is defined in emailclient.cpp aswell... -#define LED_MAIL 0 -#define SHARP_LED_MAIL 9 - -#define CUSTOM_LEDS( led, status ) \ -{ \ - if ( led == LED_MAIL ) \ - led = SHARP_LED_MAIL; \ - static int fd = open( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); \ - sharp_led_status leds; \ - memset(&leds, 0, sizeof(leds)); \ - leds.which = led; \ - leds.status = status; \ - ioctl( fd, SHARP_LED_SETSTATUS, (char*)&leds ); \ -} - -#define QPE_HAVE_MEMALERTER - -#define QPE_MEMALERTER_IMPL \ -static void sig_handler(int sig) \ -{ \ - switch (sig) { \ - case SIGHUP: \ - memstate = VeryLow; \ - break; \ - case SIGUSR1: \ - memstate = Normal; \ - break; \ - case SIGUSR2: \ - memstate = Low; \ - break; \ - } \ -} \ -static void initMemalerter() \ -{ \ - struct sigaction sa; \ - memset(&sa, '\0', sizeof sa); \ - sa.sa_handler = sig_handler; \ - sa.sa_flags = SA_RESTART; \ - if (sigaction(SIGHUP, &sa, NULL) < 0) { \ - return; \ - } \ - if (sigaction(SIGUSR1, &sa, NULL) < 0) { \ - return; \ - } \ - if (sigaction(SIGUSR2, &sa, NULL) < 0) { \ - return; \ - } \ - FILE *fo = fopen("/proc/sys/vm/freepg_signal_proc", "w"); \ - \ - if (!fo) \ - return; \ - fprintf(fo, "qpe\n"); \ - fclose(fo); \ -} - -#define QPE_INITIAL_NUMLOCK_STATE \ -{ \ - bool numLock = FALSE; \ - sharp_kbdctl_modifstat st; \ - int dev = ::open("/dev/sharp_kbdctl", O_RDWR); \ - if( dev >= 0 ) { \ - memset(&st, 0, sizeof(st)); \ - st.which = 3; \ - int ret = ioctl(dev, SHARP_KBDCTL_GETMODIFSTAT, (char*)&st); \ - if( !ret ) \ - numLock = (bool)st.stat; \ - ::close(dev); \ - } \ - return numLock; \ -} diff --git a/library/datebookmonth.h b/library/datebookmonth.h index 6cd1ac5..a7647ae 100644 --- a/library/datebookmonth.h +++ b/library/datebookmonth.h @@ -65,12 +65,13 @@ private slots: private: QToolButton *begin, *back, *next, *end; QComboBox *month; QSpinBox *year; DateBookMonthHeaderPrivate *d; + int focus; }; class DayItemMonthPrivate; class DayItemMonth : public QTableItem { public: diff --git a/library/fileselector.h b/library/fileselector.h index ef8efea..8cfdf13 100644 --- a/library/fileselector.h +++ b/library/fileselector.h @@ -19,20 +19,21 @@ **********************************************************************/ #ifndef FILESELECTOR_H #define FILESELECTOR_H #include <qhbox.h> #include <qvbox.h> -#include <qlistview.h> #include <qtoolbutton.h> +#include <qlistview.h> #include "filemanager.h" #include "applnk.h" class QPopupMenu; class QPushButton; +class FileSelectorView; class FileSelectorItem : public QListViewItem { public: FileSelectorItem( QListView *parent, const DocLnk& f ); ~FileSelectorItem(); @@ -40,51 +41,22 @@ public: DocLnk file() const { return fl; } private: DocLnk fl; }; -class CategoryMenu; -class FileSelectorViewPrivate; -class FileSelectorView : public QListView -{ - Q_OBJECT - -public: - FileSelectorView( const QString &mimefilter, QWidget *parent, const char *name ); - ~FileSelectorView(); - void reread(); - int fileCount() { return count; } - - void setCategoryFilter(CategoryMenu *); -protected: - void keyPressEvent( QKeyEvent *e ); - -protected slots: - void cardMessage( const QCString &, const QByteArray &); - - void categoryChanged(); - -private: - QString filter; - FileManager *fileManager; - int count; - FileSelectorViewPrivate *d; -}; - class FileSelectorPrivate; class FileSelector : public QVBox { Q_OBJECT public: FileSelector( const QString &mimefilter, QWidget *parent, const char *name, bool newVisible = TRUE, bool closeVisible = TRUE ); ~FileSelector(); void setNewVisible( bool b ); void setCloseVisible( bool b ); - void setCategoriesVisible( bool b ); void reread(); int fileCount(); const DocLnk *selected(); signals: void fileSelected( const DocLnk & ); diff --git a/library/finddialog.cpp b/library/finddialog.cpp index 7a9367b..904e952 100644 --- a/library/finddialog.cpp +++ b/library/finddialog.cpp @@ -15,12 +15,16 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +// WARNING: Do *NOT* define this yourself. The SL5xxx from SHARP does NOT +// have this class. +#define QTOPIA_INTERNAL_FD + #include "finddialog.h" #include "findwidget_p.h" #include <qlayout.h> #include <qpushbutton.h> diff --git a/library/finddialog.h b/library/finddialog.h index 265b5ae..00c7b45 100644 --- a/library/finddialog.h +++ b/library/finddialog.h @@ -15,12 +15,17 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ + +// +// DO NOT ATTEMPT TO USE THIS CLASS +// + #ifndef __FINDDIALOG_H__ #define __FINDDIALOG_H__ #include <qdatetime.h> #include <qdialog.h> @@ -28,15 +33,21 @@ class FindWidget; class FindDialogPrivate; class FindDialog : public QDialog { Q_OBJECT public: + +// WARNING: Do *NOT* define this yourself. The SL5xxx from SHARP does NOT +// have this class. +#ifdef QTOPIA_INTERNAL_FD + FindDialog( const QString &appName, QWidget *parent = 0, const char *name = 0, bool modal = TRUE ); ~FindDialog(); +#endif QString findText() const; void setUseDate( bool show ); void setDate( const QDate &dt ); public slots: diff --git a/library/mimetype.cpp b/library/mimetype.cpp index c6a4453..9fab160 100644 --- a/library/mimetype.cpp +++ b/library/mimetype.cpp @@ -15,12 +15,13 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#define QTOPIA_INTERNAL_MIMEEXT #include "mimetype.h" #include "applnk.h" #include "resource.h" #include "qpeapplication.h" #include <qfile.h> #include <qdict.h> @@ -43,12 +44,13 @@ public: QImage unscaledIcon = Resource::loadImage( icon ); regIcon.convertFromImage( unscaledIcon.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); bigIcon.convertFromImage( unscaledIcon.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ) ); } } QString id; + QString extension; QString desc; QPixmap regIcon; QPixmap bigIcon; AppLnk app; }; @@ -56,12 +58,13 @@ class MimeType::Dict : public QDict<MimeTypeData> { public: Dict() {} }; MimeType::Dict* MimeType::d=0; static QMap<QString,QString> *typeFor = 0; +static QMap<QString,QString> *extFor = 0; MimeType::Dict& MimeType::dict() { if ( !d ) { d = new Dict; d->setAutoDelete(TRUE); @@ -93,12 +96,18 @@ QString MimeType::description() const QPixmap MimeType::pixmap() const { MimeTypeData* d = data(i); return d ? d->regIcon : QPixmap(); } +QString MimeType::extension() const +{ + loadExtensions(); + return *(*extFor).find(i); +} + QPixmap MimeType::bigPixmap() const { MimeTypeData* d = data(i); return d ? d->bigIcon : QPixmap(); } @@ -125,12 +134,13 @@ void MimeType::clear() d = 0; } void MimeType::loadExtensions() { if ( !typeFor ) { + extFor = new QMap<QString,QString>; typeFor = new QMap<QString,QString>; loadExtensions("/etc/mime.types"); loadExtensions(QPEApplication::qpeDir()+"etc/mime.types"); } } @@ -142,15 +152,18 @@ void MimeType::loadExtensions(const QString& filename) QRegExp space("[ \t]+"); while (!in.atEnd()) { QStringList tokens = QStringList::split(space, in.readLine()); QStringList::ConstIterator it = tokens.begin(); if ( it != tokens.end() ) { QString id = *it; ++it; - while (it != tokens.end()) { - (*typeFor)[*it] = id; - ++it; + if ( it != tokens.end() ) { + (*extFor)[id] = *it; + while (it != tokens.end()) { + (*typeFor)[*it] = id; + ++it; + } } } } } } diff --git a/library/mimetype.h b/library/mimetype.h index 58725d7..b6cca95 100644 --- a/library/mimetype.h +++ b/library/mimetype.h @@ -37,12 +37,17 @@ public: QString id() const; QString description() const; QPixmap pixmap() const; QPixmap bigPixmap() const; +// DON'T define this yourself! +#ifdef QTOPIA_INTERNAL_MIMEEXT + QString extension() const; +#endif + const AppLnk* application() const; static QString appsFolderName(); static void updateApplications(); // These shouldn't be needed diff --git a/library/network.cpp b/library/network.cpp index 7d51016..e6d2781 100644 --- a/library/network.cpp +++ b/library/network.cpp @@ -15,12 +15,13 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#define QTOPIA_INTERNAL_LANGLIST #include "qpe/network.h" #include "qpe/networkinterface.h" #include "qpe/global.h" #include "qpe/config.h" #include "qpe/resource.h" #include "qpe/qpeapplication.h" @@ -415,20 +416,22 @@ NetworkInterface* Network::loadPlugin(const QString& type) if ( !iface ) { QString libfile = QPEApplication::qpeDir() + "/plugins/network/lib" + type + ".so"; QLibrary lib(libfile); if ( !lib.queryInterface( IID_Network, (QUnknownInterface**)&iface ) == QS_OK ) return 0; ifaces->insert(type,iface); - QString lang = getenv( "LANG" ); - QTranslator * trans = new QTranslator(qApp); - QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/lib"+type+".qm"; - if ( trans->load( tfn )) - qApp->installTranslator( trans ); - else - delete trans; - + QStringList langs = Global::languageList(); + for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { + QString lang = *it; + QTranslator * trans = new QTranslator(qApp); + QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/lib"+type+".qm"; + if ( trans->load( tfn )) + qApp->installTranslator( trans ); + else + delete trans; + } } return iface; #else return 0; #endif } diff --git a/library/power.cpp b/library/power.cpp index 990ff62..12b52ed 100644 --- a/library/power.cpp +++ b/library/power.cpp @@ -99,12 +99,14 @@ bool PowerStatusManager::getProcApmStatus( int &ac, int &bs, int &bf, int &pc, i ps->bs = PowerStatus::Critical; break; case 0x03: ps->bs = PowerStatus::Charging; break; case 0x04: + case 0xff: // 0xff is Unknown but we map to NotPresent + default: ps->bs = PowerStatus::NotPresent; break; } switch ( ac ) { case 0x00: diff --git a/library/qcopmessage_qws.h b/library/qcopmessage_qws.h deleted file mode 100644 index c19f57d..0000000 --- a/library/qcopmessage_qws.h +++ b/dev/null @@ -1,99 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#ifndef QCOP_MESSAGE_H -#define QCOP_MESSAGE_H - -#include <qdatastream.h> -#include <qbuffer.h> - -class QCopMessage : public QDataStream { - public: - QCopMessage(); - QCopMessage(const QCString& channel, const QCString& message); - QCopMessage(const QCopMessage& orig); - ~QCopMessage(); - - void setChannel(QCString& channel) { m_Channel = channel; } - QCString channel() const { return m_Channel; } - void setMessage(QCString& message) { m_Message = message; } - QCString message() const { return m_Message; } - const QByteArray data() const; - - QCopMessage& operator=(const QCopMessage& orig); - - private: - QCString m_Channel; - QCString m_Message; -}; - -// ### No need to inline, just maintaining binary compatability -inline QCopMessage::QCopMessage() : QDataStream(new QBuffer()) { - device()->open(IO_WriteOnly); -} - -inline QCopMessage::QCopMessage(const QCString& channel, const QCString& message) - : QDataStream(new QBuffer()), m_Channel(channel), m_Message(message) { - device()->open(IO_WriteOnly); -} - -inline QCopMessage::QCopMessage(const QCopMessage& orig) : QDataStream() { - // The QBuffer is going to share the byte array, so it will keep the - // data pointer even when this one goes out of scope. - QByteArray array(((QBuffer*)orig.device())->buffer()); - array.detach(); - setDevice(new QBuffer(array)); - device()->open(IO_Append); - - m_Channel = orig.channel(); - m_Message = orig.message(); -} - -inline QCopMessage& QCopMessage::operator=(const QCopMessage& orig) { - if (device()) { - delete device(); - unsetDevice(); - } - - // The QBuffer is going to share the byte array, so it will keep the - // data pointer even when this one goes out of scope. - QByteArray array(((QBuffer*)orig.device())->buffer()); - array.detach(); - setDevice(new QBuffer(array)); - device()->open(IO_Append); - - m_Channel = orig.channel(); - m_Message = orig.message(); - - return *this; -} - -inline const QByteArray QCopMessage::data() const { - return ((QBuffer*)device())->buffer(); -} - -inline QCopMessage::~QCopMessage() { - // If we still have our QBuffer, clean it up... - if (device()) - delete device(); - unsetDevice(); -} - -#endif diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp index b6085ef..e041945 100644 --- a/library/qpedecoration_qws.cpp +++ b/library/qpedecoration_qws.cpp @@ -14,12 +14,13 @@ ** 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 <qapplication.h> #include <qstyle.h> #include <qwidget.h> #include <qpainter.h> #include <qtimer.h> #include <qwhatsthis.h> @@ -241,16 +242,16 @@ QPEDecoration::QPEDecoration() : QWSDefaultDecoration() { imageOk = Resource::loadImage( "OKButton" ); imageClose = Resource::loadImage( "CloseButton" ); imageHelp = Resource::loadImage( "HelpButton" ); helpFile = QString(qApp->argv()[0]) + ".html"; - QString lang = getenv( "LANG" ); - helpExists = QFile::exists( QPEApplication::qpeDir() + "/help/" + lang + "/html/" + helpFile ); - if ( !helpExists ) - helpExists = QFile::exists( QPEApplication::qpeDir() + "/help/en/html/" + helpFile ); + QStringList path = Global::helpPath(); + helpExists = FALSE; + for (QStringList::ConstIterator it=path.begin(); it!=path.end() && !helpExists; ++it) + helpExists = QFile::exists( *it + "/" + helpFile ); #ifndef MINIMIZE_HELP_HACK qpeManager = new QPEManager( this ); #else qpeManager = 0; #endif } diff --git a/noncore/games/go/gowidget.cpp b/noncore/games/go/gowidget.cpp index fca9797..8567b30 100644 --- a/noncore/games/go/gowidget.cpp +++ b/noncore/games/go/gowidget.cpp @@ -46,12 +46,14 @@ static QBrush *goBrush; //static QImage *blackStone; //static QImage *whiteStone; static QPixmap *newBlackStone; static QPixmap *blackStone; static QPixmap *whiteStone; +static bool smallStones = FALSE; + GoMainWidget::GoMainWidget( QWidget *parent, const char* name) : QMainWindow( parent, name ) { setToolBarsMovable( FALSE ); GoWidget *go = new GoWidget(this); @@ -194,12 +196,25 @@ void GoWidget::readConfig() void GoWidget::resizeEvent( QResizeEvent * ) { d = QMIN(width(),height())/19; // int r = (d/2-1); bx = (width() - 18*d)/2 ; by = (height() - 18*d)/2 ; + + if ( d < 10 && !smallStones ) { + blackStone->convertFromImage( blackStone->convertToImage().smoothScale(8,8) ); + whiteStone->convertFromImage( whiteStone->convertToImage().smoothScale(8,8) ); + newBlackStone->convertFromImage( newBlackStone->convertToImage().smoothScale(8,8) ); + + smallStones = TRUE; + } else if ( d >= 10 && smallStones ) { + blackStone = new QPixmap(Resource::loadPixmap( "Go-black" )); + whiteStone = new QPixmap(Resource::loadPixmap( "Go-white" )); + newBlackStone = new QPixmap(Resource::loadPixmap( "Go-black-highlight" )); + smallStones = FALSE; + } } void GoWidget::init() { lastX = lastY = newX = newY = -1; nPassed = 0; diff --git a/noncore/games/minesweep/minefield.h b/noncore/games/minesweep/minefield.h index 4ede435..1349c35 100644 --- a/noncore/games/minesweep/minefield.h +++ b/noncore/games/minesweep/minefield.h @@ -17,18 +17,18 @@ ** not clear to you. ** **********************************************************************/ #ifndef MINEFIELD_H #define MINEFIELD_H -#include <qtable.h> +#include <qscrollview.h> class Mine; class Config; -class MineField : public QTable +class MineField : public QScrollView { Q_OBJECT public: MineField( QWidget* parent = 0, const char* name = 0 ); ~MineField(); @@ -38,50 +38,64 @@ public: void readConfig(Config&); void writeConfig(Config&) const; int level() const { return lev; } + void setAvailableRect( const QRect & ); public slots: void setup( int level ); void showMines(); signals: void gameOver( bool won ); void gameStarted(); void mineCount( int ); protected: - void paintFocus( QPainter*, const QRect& ); - void viewportMousePressEvent( QMouseEvent* ); - void viewportMouseReleaseEvent( QMouseEvent* ); + + void contentsMousePressEvent( QMouseEvent* ); + void contentsMouseReleaseEvent( QMouseEvent* ); void keyPressEvent( QKeyEvent* ); void keyReleaseEvent( QKeyEvent* ); - + void drawContents( QPainter * p, int clipx, int clipy, int clipw, int cliph ); + int getHint( int row, int col ); - void setHint( Mine* ); + void setHint( int r, int c ); void updateMine( int row, int col ); void paletteChange( const QPalette & ); - + void updateCell( int r, int c ); + bool onBoard( int r, int c ) const { return r >= 0 && r < numRows && c >= 0 && c < numCols; } + Mine *mine( int row, int col ) { return onBoard(row, col ) ? mines[row+numCols*col] : 0; } + const Mine *mine( int row, int col ) const { return onBoard(row, col ) ? mines[row+numCols*col] : 0; } + protected slots: void cellPressed( int row, int col ); void cellClicked( int row, int col ); void held(); private: + int findCellSize(); + void setCellSize( int ); + State stat; void MineField::setState( State st ); void MineField::placeMines(); enum FlagAction { NoAction, FlagOn, FlagNext }; FlagAction flagAction; bool ignoreClick; int currRow; int currCol; + int numRows, numCols; + int minecount; int mineguess; int nonminecount; int lev; + QRect availableRect; + int cellSize; QTimer *holdTimer; + Mine **mines; }; #endif // MINEFIELD_H diff --git a/noncore/games/minesweep/minesweep.cpp b/noncore/games/minesweep/minesweep.cpp index 6492462..c84fe53 100644 --- a/noncore/games/minesweep/minesweep.cpp +++ b/noncore/games/minesweep/minesweep.cpp @@ -216,31 +216,47 @@ void ResultIndicator::timerEvent( QTimerEvent *te ) } else { delete this; } } +class MineFrame : public QFrame +{ +public: + MineFrame( QWidget *parent, const char *name = 0 ) + :QFrame( parent, name ) {} + void setField( MineField *f ) { field = f; } +protected: + void resizeEvent( QResizeEvent *e ) { + field->setAvailableRect( contentsRect()); + QFrame::resizeEvent(e); + } +private: + MineField *field; +}; + + + MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) : QMainWindow( parent, name, f ) { srand(::time(0)); setCaption( tr("Mine Hunt") ); setIcon( Resource::loadPixmap( "minesweep_icon" ) ); - QPEToolBar *menuToolBar = new QPEToolBar( this ); - QPEMenuBar *menuBar = new QPEMenuBar( menuToolBar ); + QPEToolBar *toolBar = new QPEToolBar( this ); + toolBar->setHorizontalStretchable( TRUE ); + + QPEMenuBar *menuBar = new QPEMenuBar( toolBar ); QPopupMenu *gameMenu = new QPopupMenu( this ); gameMenu->insertItem( tr("Beginner"), this, SLOT( beginner() ) ); gameMenu->insertItem( tr("Advanced"), this, SLOT( advanced() ) ); gameMenu->insertItem( tr("Expert"), this, SLOT( expert() ) ); menuBar->insertItem( tr("Game"), gameMenu ); - - QPEToolBar *toolBar = new QPEToolBar( this ); - toolBar->setHorizontalStretchable( TRUE ); guessLCD = new QLCDNumber( toolBar ); toolBar->setStretchableWidget( guessLCD ); QPalette lcdPal( red ); lcdPal.setColor( QColorGroup::Background, QApplication::palette().active().background() ); @@ -262,23 +278,22 @@ MineSweep::MineSweep( QWidget* parent, const char* name, WFlags f ) timeLCD->setFrameStyle( QFrame::NoFrame ); timeLCD->setNumDigits( 5 ); // "mm:ss" timeLCD->setBackgroundMode( PaletteButton ); setToolBarsMovable ( FALSE ); - addToolBar( menuToolBar ); addToolBar( toolBar ); - QFrame *mainframe = new QFrame( this ); + MineFrame *mainframe = new MineFrame( this ); mainframe->setFrameShape( QFrame::Box ); mainframe->setFrameShadow( QFrame::Raised ); - mainframe->setMargin(5); + mainframe->setLineWidth(2); - QBoxLayout *box = new QVBoxLayout( mainframe ); + field = new MineField( mainframe ); - box->addWidget( field, 0, AlignCenter ); + mainframe->setField( field ); QFont fnt = field->font(); fnt.setBold( TRUE ); field->setFont( QFont( fnt ) ); field->setFocus(); setCentralWidget( mainframe ); diff --git a/noncore/games/snake/interface.h b/noncore/games/snake/interface.h index 30c7f84..454d4ee 100644 --- a/noncore/games/snake/interface.h +++ b/noncore/games/snake/interface.h @@ -33,13 +33,12 @@ class SnakeGame : public QMainWindow { public: SnakeGame(QWidget* parent=0, const char* name=0, WFlags f=0); ~SnakeGame(); void clear(); void createTargets(); - void welcomescreen(); protected: virtual void keyPressEvent(QKeyEvent*); virtual void resizeEvent(QResizeEvent *e); signals: @@ -48,12 +47,13 @@ signals: private slots: void newGame(); void gameOver(); void wait(); void levelUp(); void scoreInc(); + void welcomescreen(); private: void showScore(int); QCanvasView* cv; QLabel* scorelabel; QCanvas canvas; diff --git a/noncore/games/snake/obstacle.cpp b/noncore/games/snake/obstacle.cpp index 2d07fe7..4bdefa5 100644 --- a/noncore/games/snake/obstacle.cpp +++ b/noncore/games/snake/obstacle.cpp @@ -20,26 +20,45 @@ #include "obstacle.h" #include "codes.h" #include <qpe/resource.h> -Obstacle::Obstacle(QCanvas* canvas, int x, int y) - : QCanvasSprite(0, canvas) + + +Obstacle::Obstacle(QCanvas* canvas, int y) + : QCanvasSprite(0,canvas) { - newObstacle(x, y); + newObstacle(y); } -void Obstacle::newObstacle(int x, int y) +void Obstacle::newObstacle(int y) { - QCanvasPixmapArray* obstaclearray = new QCanvasPixmapArray(Resource::findPixmap("snake/wall.png")); - + QPixmap obstaclePix( Resource::findPixmap("snake/wall.png") ); + + if ( obstaclePix.width() > canvas()->width()*3/5 ) { + int w = canvas()->width()*3/5; + w = w - w % 16; + obstaclePix.resize( w, obstaclePix.height() ); + } + + QList<QPixmap> pixl; + pixl.append( &obstaclePix ); + + QPoint nullp; + QList<QPoint> pl; + pl.append( &nullp ); + + QCanvasPixmapArray* obstaclearray = new QCanvasPixmapArray(pixl, pl); setSequence(obstaclearray); - + + int x = ( canvas()->width() - obstaclePix.width() )/2; + x = x - x % 16; + y = y - y % 16; move(x, y); - + setZ( -100 ); show(); canvas()->update(); } int Obstacle::rtti() const { diff --git a/noncore/games/snake/obstacle.h b/noncore/games/snake/obstacle.h index 838917f..b3c7846 100644 --- a/noncore/games/snake/obstacle.h +++ b/noncore/games/snake/obstacle.h @@ -20,11 +20,11 @@ #include <qcanvas.h> class Obstacle : public QCanvasSprite { public: - Obstacle(QCanvas*, int x, int y); + Obstacle(QCanvas*, int y); ~Obstacle(); - void newObstacle(int x, int y); + void newObstacle(int y); int rtti() const; }; diff --git a/noncore/games/solitaire/canvascard.cpp b/noncore/games/solitaire/canvascard.cpp index ae3c859..7c4a5ba 100644 --- a/noncore/games/solitaire/canvascard.cpp +++ b/noncore/games/solitaire/canvascard.cpp @@ -24,12 +24,13 @@ #include <qpe/resource.h> #include <qpainter.h> #include <qimage.h> #include <qpaintdevice.h> #include <qbitmap.h> +#include <qgfx_qws.h> // Needed to get the device's width #include <math.h> #if defined( QT_QWS_CASSIOPEIA ) #define SLOW_HARDWARE #endif @@ -99,16 +100,23 @@ QBitmap *CanvasCard::cardsSuitsUpsideDown = NULL; CanvasCard::CanvasCard( eValue v, eSuit s, bool f, QCanvas *canvas ) : Card(v, s, f), QCanvasRectangle( 0, 0, 1, 1, canvas ), cardBack(1), scaleX(1.0), scaleY(1.0) { if ( !cardsFaces ) { - cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face" ) ); - cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); - cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars" ) ); - cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits" ) ); + if ( qt_screen->deviceWidth() < 200 ) { + cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face_small" ) ); + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001_small" ) ); + cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars_small" ) ); + cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits_small" ) ); + } else { + cardsFaces = new QPixmap( Resource::loadPixmap( "cards/card_face" ) ); + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); + cardsChars = new QBitmap( Resource::loadBitmap( "cards/card_chars" ) ); + cardsSuits = new QBitmap( Resource::loadBitmap( "cards/card_suits" ) ); + } cardsCharsUpsideDown = Create180RotatedBitmap( cardsChars ); cardsSuitsUpsideDown = Create180RotatedBitmap( cardsSuits ); } xOff = cardsFaces->width() / 2; yOff = cardsFaces->height() / 2; setSize( cardsFaces->width(), cardsFaces->height() ); @@ -123,23 +131,38 @@ void CanvasCard::setCardBack(int b) cardBack = b; if ( cardsBacks ) delete cardsBacks; - switch (cardBack) { - case 0: - cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); break; - case 1: - cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002" ) ); break; - case 2: - cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003" ) ); break; - case 3: - cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004" ) ); break; - case 4: - cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005" ) ); break; + if ( qt_screen->deviceWidth() < 200 ) { + switch (cardBack) { + case 0: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001_small" ) ); break; + case 1: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002_small" ) ); break; + case 2: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003_small" ) ); break; + case 3: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004_small" ) ); break; + case 4: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005_small" ) ); break; + } + } else { + switch (cardBack) { + case 0: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0001" ) ); break; + case 1: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0002" ) ); break; + case 2: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0003" ) ); break; + case 3: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0004" ) ); break; + case 4: + cardsBacks = new QPixmap( Resource::loadPixmap( "cards/card_back0005" ) ); break; + } } if ( !isFacing() ) redraw(); } } @@ -178,17 +201,25 @@ void CanvasCard::draw(QPainter &painter) if ( isRed() == TRUE ) p->setPen( QColor( 0xFF, 0, 0 ) ); else p->setPen( QColor( 0, 0, 0 ) ); - p->drawPixmap( ix + 0, iy + 0, *cardsFaces ); - p->drawPixmap( ix + 4, iy + 4, *cardsChars, 7*(getValue()-1), 0, 7, 7 ); - p->drawPixmap( ix + 12, iy + 4, *cardsSuits, 7*(getSuit()-1), 0, 7, 8 ); - p->drawPixmap( ix + w-4-7, iy + h-4-7, *cardsCharsUpsideDown, 7*(12-getValue()+1), 0, 7, 7 ); - p->drawPixmap( ix + w-12-7, iy + h-5-7, *cardsSuitsUpsideDown, 7*(3-getSuit()+1), 0, 7, 8 ); + if ( qt_screen->deviceWidth() < 200 ) { + p->drawPixmap( ix + 0, iy + 0, *cardsFaces ); + p->drawPixmap( ix + 3, iy + 3, *cardsChars, 5*(getValue()-1), 0, 5, 6 ); + p->drawPixmap( ix + 11, iy + 3, *cardsSuits, 5*(getSuit()-1), 0, 5, 6 ); + p->drawPixmap( ix + w-3-5, iy + h-3-6, *cardsCharsUpsideDown, 5*(12-getValue()+1), 0, 5, 6 ); + p->drawPixmap( ix + w-11-5, iy + h-3-6, *cardsSuitsUpsideDown, 5*(3-getSuit()+1), 0, 5, 6 ); + } else { + p->drawPixmap( ix + 0, iy + 0, *cardsFaces ); + p->drawPixmap( ix + 4, iy + 4, *cardsChars, 7*(getValue()-1), 0, 7, 7 ); + p->drawPixmap( ix + 12, iy + 4, *cardsSuits, 7*(getSuit()-1), 0, 7, 8 ); + p->drawPixmap( ix + w-4-7, iy + h-4-7, *cardsCharsUpsideDown, 7*(12-getValue()+1), 0, 7, 7 ); + p->drawPixmap( ix + w-12-7, iy + h-5-7, *cardsSuitsUpsideDown, 7*(3-getSuit()+1), 0, 7, 8 ); + } } else { p->drawPixmap( ix, iy, *cardsBacks ); } diff --git a/noncore/games/solitaire/canvasshapes.cpp b/noncore/games/solitaire/canvasshapes.cpp index 28d0b4e..6ccd4a4 100644 --- a/noncore/games/solitaire/canvasshapes.cpp +++ b/noncore/games/solitaire/canvasshapes.cpp @@ -16,17 +16,18 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qpainter.h> #include <qcanvas.h> +#include <qgfx_qws.h> #include "canvasshapes.h" CanvasRoundRect::CanvasRoundRect(int x, int y, QCanvas *canvas) : - QCanvasRectangle( x, y, 23, 36, canvas) + QCanvasRectangle( x, y, ( qt_screen->deviceWidth() < 200 ) ? 20 : 23, ( qt_screen->deviceWidth() < 200 ) ? 27 : 36, canvas) { setZ(0); show(); } @@ -36,13 +37,16 @@ void CanvasRoundRect::redraw() show(); } void CanvasRoundRect::drawShape(QPainter &p) { - p.drawRoundRect( (int)x(), (int)y(), 23, 36); + if ( qt_screen->deviceWidth() < 200 ) + p.drawRoundRect( (int)x() + 1, (int)y() + 1, 18, 25); + else + p.drawRoundRect( (int)x(), (int)y(), 23, 36); } CanvasCircleOrCross::CanvasCircleOrCross(int x, int y, QCanvas *canvas) : QCanvasRectangle( x, y, 21, 21, canvas), circleShape(TRUE) { @@ -70,23 +74,41 @@ void CanvasCircleOrCross::setCross() redraw(); } void CanvasCircleOrCross::drawShape(QPainter &p) { - int x1 = (int)x(), y1 = (int)y(); - // Green circle - if (circleShape == TRUE) { - p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) ); - p.drawEllipse( x1 - 1, y1 - 1, 21, 21); - p.drawEllipse( x1 - 1, y1 - 0, 21, 19); - p.drawEllipse( x1 + 0, y1 + 0, 19, 19); - p.drawEllipse( x1 + 1, y1 + 0, 17, 19); - p.drawEllipse( x1 + 1, y1 + 1, 17, 17); - // Red cross + if ( qt_screen->deviceWidth() < 200 ) { + int x1 = (int)x(), y1 = (int)y(); + // Green circle + if (circleShape == TRUE) { + p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) ); + p.drawEllipse( x1 - 1, y1 - 1, 17, 17); + p.drawEllipse( x1 - 1, y1 - 0, 17, 15); + p.drawEllipse( x1 + 0, y1 + 0, 15, 15); + p.drawEllipse( x1 + 1, y1 + 0, 13, 15); + p.drawEllipse( x1 + 1, y1 + 1, 13, 13); + // Red cross + } else { + p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 4 ) ); + p.drawLine( x1, y1, x1 + 14, y1 + 14); + p.drawLine( x1 + 14, y1, x1, y1 + 14); + } } else { - p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 5 ) ); - p.drawLine( x1, y1, x1 + 20, y1 + 20); - p.drawLine( x1 + 20, y1, x1, y1 + 20); + int x1 = (int)x(), y1 = (int)y(); + // Green circle + if (circleShape == TRUE) { + p.setPen( QPen( QColor(0x10, 0xE0, 0x10), 1 ) ); + p.drawEllipse( x1 - 1, y1 - 1, 21, 21); + p.drawEllipse( x1 - 1, y1 - 0, 21, 19); + p.drawEllipse( x1 + 0, y1 + 0, 19, 19); + p.drawEllipse( x1 + 1, y1 + 0, 17, 19); + p.drawEllipse( x1 + 1, y1 + 1, 17, 17); + // Red cross + } else { + p.setPen( QPen( QColor(0xE0, 0x10, 0x10), 5 ) ); + p.drawLine( x1, y1, x1 + 20, y1 + 20); + p.drawLine( x1 + 20, y1, x1, y1 + 20); + } } } diff --git a/noncore/games/solitaire/freecellcardgame.cpp b/noncore/games/solitaire/freecellcardgame.cpp index e82afd4..98415aa 100644 --- a/noncore/games/solitaire/freecellcardgame.cpp +++ b/noncore/games/solitaire/freecellcardgame.cpp @@ -14,34 +14,39 @@ ** 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. ** **********************************************************************/ +#include <qgfx_qws.h> #include "freecellcardgame.h" extern int highestZ; int numberOfFreeCells = 4; FreecellCardGame::FreecellCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent) { numberOfFreeCells = 4; highestZ = 0; + int spaceBetweenPiles = ( qt_screen->deviceWidth() < 200 ) ? 21 : 28; + int xOrigin = ( qt_screen->deviceWidth() < 200 ) ? 0 : 5; + int spacing = ( qt_screen->deviceWidth() < 200 ) ? 0 : 0; + for (int i = 0; i < 4; i++) { - freecellPiles[i] = new FreecellFreecellPile( 5 + i * 28, 10, canvas() ); + freecellPiles[i] = new FreecellFreecellPile( xOrigin + i * spaceBetweenPiles, 10, canvas() ); addCardPile(freecellPiles[i]); } for (int i = 0; i < 4; i++) { - discardPiles[i] = new FreecellDiscardPile( 125 + i * 28, 10, canvas() ); + discardPiles[i] = new FreecellDiscardPile( xOrigin + spacing + 6 + (i + 4) * spaceBetweenPiles, 10, canvas() ); addCardPile(discardPiles[i]); } for (int i = 0; i < 8; i++) { - workingPiles[i] = new FreecellWorkingPile( 10 + i * 28, 50, canvas() ); + workingPiles[i] = new FreecellWorkingPile( xOrigin + spacing + 2 + i * spaceBetweenPiles, 50, canvas() ); addCardPile(workingPiles[i]); } } void FreecellCardGame::deal(void) diff --git a/noncore/games/solitaire/patiencecardgame.cpp b/noncore/games/solitaire/patiencecardgame.cpp index 5a9326a..1501d2f 100644 --- a/noncore/games/solitaire/patiencecardgame.cpp +++ b/noncore/games/solitaire/patiencecardgame.cpp @@ -14,36 +14,53 @@ ** 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. ** **********************************************************************/ +#include <qgfx_qws.h> #include "patiencecardgame.h" int highestZ = 0; PatienceCardGame::PatienceCardGame(QCanvas *c, bool snap, QWidget *parent) : CanvasCardGame(*c, snap, parent) { numberOfTimesThroughDeck = 0; highestZ = 0; - circleCross = new CanvasCircleOrCross( 7, 18, canvas() ); - rectangle = new CanvasRoundRect( 35, 10, canvas() ); + if ( qt_screen->deviceWidth() < 200 ) { + circleCross = new CanvasCircleOrCross( 7, 16, canvas() ); + rectangle = new CanvasRoundRect( 30, 10, canvas() ); - for (int i = 0; i < 4; i++) { - discardPiles[i] = new PatienceDiscardPile( 110 + i * 30, 10, canvas() ); - addCardPile(discardPiles[i]); - } - for (int i = 0; i < 7; i++) { - workingPiles[i] = new PatienceWorkingPile( 10 + i * 30, 50, canvas() ); - addCardPile(workingPiles[i]); + for (int i = 0; i < 4; i++) { + discardPiles[i] = new PatienceDiscardPile( 78 + i * 23, 10, canvas() ); + addCardPile(discardPiles[i]); + } + for (int i = 0; i < 7; i++) { + workingPiles[i] = new PatienceWorkingPile( 5 + i * 23, 50, canvas() ); + addCardPile(workingPiles[i]); + } + faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() ); + faceUpDealingPile = new PatienceFaceUpDeck( 30, 10, canvas() ); + } else { + circleCross = new CanvasCircleOrCross( 7, 18, canvas() ); + rectangle = new CanvasRoundRect( 35, 10, canvas() ); + + for (int i = 0; i < 4; i++) { + discardPiles[i] = new PatienceDiscardPile( 110 + i * 30, 10, canvas() ); + addCardPile(discardPiles[i]); + } + for (int i = 0; i < 7; i++) { + workingPiles[i] = new PatienceWorkingPile( 10 + i * 30, 50, canvas() ); + addCardPile(workingPiles[i]); + } + faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() ); + faceUpDealingPile = new PatienceFaceUpDeck( 35, 10, canvas() ); } - faceDownDealingPile = new PatienceFaceDownDeck( 5, 10, canvas() ); - faceUpDealingPile = new PatienceFaceUpDeck( 35, 10, canvas() ); } PatienceCardGame::~PatienceCardGame() { delete circleCross; @@ -170,13 +187,16 @@ bool PatienceCardGame::mousePressCard( Card *card, QPoint p ) // Added Code faceDownDealingPile->removeCard(item); faceUpDealingPile->addCardToTop(item); item->setCardPile( faceUpDealingPile ); - item->flipTo( 35, (int)item->y() ); + if ( qt_screen->deviceWidth() < 200 ) + item->flipTo( 30, (int)item->y() ); + else + item->flipTo( 35, (int)item->y() ); } moving = NULL; moved = FALSE; // move two other cards if we flip three at a time int flipped = 1; @@ -192,13 +212,16 @@ bool PatienceCardGame::mousePressCard( Card *card, QPoint p ) // Added Code faceDownDealingPile->removeCard(item); faceUpDealingPile->addCardToTop(item); item->setCardPile( faceUpDealingPile ); - item->flipTo( 35, (int)item->y(), 8 * flipped ); + if ( qt_screen->deviceWidth() < 200 ) + item->flipTo( 30, (int)item->y(), 8 * flipped ); + else + item->flipTo( 35, (int)item->y(), 8 * flipped ); } } return TRUE; } diff --git a/noncore/games/solitaire/patiencecardgame.h b/noncore/games/solitaire/patiencecardgame.h index c4f6c48..0d0e3d5 100644 --- a/noncore/games/solitaire/patiencecardgame.h +++ b/noncore/games/solitaire/patiencecardgame.h @@ -22,12 +22,13 @@ #include <qpopupmenu.h> #include <qmainwindow.h> #include <qintdict.h> #include <qcanvas.h> +#include <qgfx_qws.h> // #include "canvascardshapes.h" // #include "canvascard.h" #include "canvascardgame.h" class PatienceFaceDownDeck : public CardPile, public CanvasRoundRect @@ -127,28 +128,30 @@ public: setNextX( pileX ); setNextY( pileY ); return; } else { top = getCardPos(NULL); if ( newTopCard->isFacing() == FALSE ) { + int offsetDown = ( qt_screen->deviceWidth() < 200 ) ? 9 : 13; // correct the position taking in to account the card is not // yet flipped, but will become flipped top = QPoint( top.x() - 1, top.y() - 3 ); newTopCard->flipTo( top.x(), top.y() ); - top = QPoint( top.x(), top.y() + 13 ); + top = QPoint( top.x(), top.y() + offsetDown ); } setNextX( top.x() ); setNextY( top.y() ); } } virtual QPoint getCardPos(Card *c) { int x = pileX, y = pileY; Card *card = cardOnBottom(); while ((card != c) && (card != NULL)) { if (card->isFacing()) { - y += 13; + int offsetDown = ( qt_screen->deviceWidth() < 200 ) ? 9 : 13; + y += offsetDown; } else { x += 1; y += 3; } card = cardInfront(card); } diff --git a/noncore/games/wordgame/wordgame.cpp b/noncore/games/wordgame/wordgame.cpp index ca4352d..16d37b3 100644 --- a/noncore/games/wordgame/wordgame.cpp +++ b/noncore/games/wordgame/wordgame.cpp @@ -56,12 +56,19 @@ enum RuleEffects { Multiplier=15, MultiplyAll=64, Start=128 }; +static int tile_smallw = 16; +static int tile_smallh = 16; +static int tile_bigw = 22; +static int tile_bigh = 22; +static int tile_stweak = -2; +static int tile_btweak = -1; + static const int rack_tiles=7; const char* sampleWGR= "wordgame_shapes\n" "15 15\n" "400001040100004\n" @@ -108,12 +115,21 @@ const char* sampleWGR= "11 e 1\n" "0\n"; WordGame::WordGame( QWidget* parent, const char* name, WFlags fl ) : QMainWindow(parent, name, fl) { + if ( qApp->desktop()->width() < 240 ) { + tile_smallw = 10; + tile_smallh = 10; + tile_bigw = 16; + tile_bigh = 16; + tile_stweak = 0; + tile_btweak = 0; + } + setIcon( Resource::loadPixmap( "wordgame" ) ); setCaption( tr("Word Game") ); setToolBarsMovable( FALSE ); vbox = new QVBox(this); @@ -244,12 +260,13 @@ void WordGame::startGame() } void WordGame::startGame(const QStringList& playerlist) { toolbar->show(); racks = new QWidgetStack(vbox); + racks->setFixedHeight(TileItem::bigHeight()+2); namelist.clear(); nplayers=0; for (QStringList::ConstIterator it=playerlist.begin(); it!=playerlist.end(); ++it) addPlayer(*it); scoreinfo->init(namelist); @@ -280,13 +297,12 @@ bool WordGame::loadRules(const QString &name) int htiles,vtiles; ts >> htiles >> vtiles; if ( htiles < 3 || vtiles < 3 ) return FALSE; - QPixmap bgshapes = Resource::loadPixmap(shapepixmap); QString rule_shapes; for (int i=0; i<vtiles; i++) { QString line; ts >> line; rule_shapes += line; } @@ -294,12 +310,18 @@ bool WordGame::loadRules(const QString &name) int re=0,e; ts >> e; while ( e && re < 10 ) { rule_effects[re] = e; if ( re++ < 10 ) ts >> e; } + + QImage shim = Resource::loadImage(shapepixmap); + shim = shim.smoothScale((re-1)*TileItem::smallWidth(),TileItem::smallHeight()); + QPixmap bgshapes; + bgshapes.convertFromImage(shim); + rule_effects[re++] = 100; // default bonus board = new Board(bgshapes, htiles, vtiles, vbox); board->setRules(rule_shapes, rule_effects); connect(board, SIGNAL(temporaryScore(int)), scoreinfo, SLOT(showTemporaryScore(int))); bag = new Bag; @@ -678,28 +700,28 @@ qDebug("%d,%d: %s (%d) for %d",current.x(),current.y(),st.latin1(),n,s); best_start = current; } } int TileItem::smallWidth() { - return 16; + return tile_smallw; } int TileItem::smallHeight() { - return 16; + return tile_smallh; } int TileItem::bigWidth() { - return 22; + return tile_bigw; } int TileItem::bigHeight() { - return 22; + return tile_bigh; } void TileItem::setState( State state ) { hide(); s = state; @@ -717,42 +739,53 @@ void TileItem::setBig(bool b) { big = b; } void TileItem::drawShape(QPainter& p) { - static QFont value_font("heletica",8); - static QFont big_font("smoothtimes",17); - static QFont small_font("smoothtimes",10); + static QFont *value_font=0; + static QFont *big_font=0; + static QFont *small_font=0; + if ( !value_font ) { + value_font = new QFont("helvetica",8); + if ( TileItem::bigWidth() < 20 ) { + big_font = new QFont("helvetica",12); + small_font = new QFont("helvetica",8); + } else { + big_font = new QFont("smoothtimes",17); + small_font = new QFont("smoothtimes",10); + } + } QRect area(x(),y(),width(),height()); p.setBrush(s == Floating ? yellow/*lightGray*/ : white); p.drawRect(area); if ( big ) { - p.setFont(value_font); + p.setFont(*value_font); QString n = QString::number(t.value()); int w = p.fontMetrics().width('1'); int h = p.fontMetrics().height(); w *= n.length(); - QRect valuearea(x()+width()-w-2,y()+height()-h+1,w,h); + QRect valuearea(x()+width()-w-1,y()+height()-h,w,h); p.drawText(valuearea,AlignCenter,n); - p.setFont(big_font); - area = QRect(x(),y(),width()-2,height()-1); + p.setFont(*big_font); + area = QRect(x(),y()+tile_btweak,width()-4,height()-1); } else { - p.setFont(small_font); - area = QRect(x(),y()+2,width(),height()-2); + p.setFont(*small_font); + area = QRect(x()+1+tile_stweak,y()+1,width(),height()-3); } if ( t.value() == 0 ) p.setPen(darkGray); p.drawText(area,AlignCenter,t.text().upper()); } Board::Board(QPixmap bgshapes, int w, int h, QWidget* parent) : QCanvasView(new QCanvas(bgshapes,w,h, TileItem::smallWidth(), TileItem::smallHeight()), parent) { + setFixedSize(w*TileItem::smallWidth(),h*TileItem::smallHeight()); grid = new TileItem*[w*h]; memset(grid,0,w*h*sizeof(TileItem*)); setFrameStyle(0); setHScrollBarMode(AlwaysOff); setVScrollBarMode(AlwaysOff); current_rack = 0; @@ -761,12 +794,17 @@ Board::Board(QPixmap bgshapes, int w, int h, QWidget* parent) : Board::~Board() { delete canvas(); } +QSize Board::sizeHint() const +{ + return QSize(canvas()->width(),canvas()->height()); +} + void Board::writeConfig(Config& cfg) { QStringList t; int n=canvas()->tilesHorizontally()*canvas()->tilesVertically(); for (int i=0; i<n; i++) t.append( grid[i] ? grid[i]->tile().key() : QString(".") ); @@ -1178,12 +1216,17 @@ Rack::Rack(int ntiles, QWidget* parent) : QCanvasView( Rack::~Rack() { clear(); delete canvas(); } +QSize Rack::sizeHint() const +{ + return QSize(-1,TileItem::bigHeight()+2); +} + void Rack::clear() { for (int i=0; i<n; i++) delete item[i]; n=0; } diff --git a/noncore/games/wordgame/wordgame.h b/noncore/games/wordgame/wordgame.h index 0ffa56a..f73c85a 100644 --- a/noncore/games/wordgame/wordgame.h +++ b/noncore/games/wordgame/wordgame.h @@ -145,12 +145,14 @@ public: void setPlayerName(const QString& name) { nm = name; } QString playerName() const { return nm; } void setComputerization(int level) { cpu=level; } bool computerized() const { return cpu>0; } + QSize sizeHint() const; + protected: void resizeEvent(QResizeEvent*e); void contentsMousePressEvent(QMouseEvent*); void contentsMouseMoveEvent(QMouseEvent*); void contentsMouseReleaseEvent(QMouseEvent*); @@ -208,12 +210,14 @@ public: const QPoint& d, bool ignoredict, QStringList* words) const; int bonussedValue(const QPoint& at, int base, int& all_mult) const; bool isStart(const QPoint& at) const; int turnScore() const { return turn_score; } + QSize sizeHint() const; + signals: void temporaryScore(int); protected: void contentsMousePressEvent(QMouseEvent*); void contentsMouseMoveEvent(QMouseEvent*); @@ -328,13 +332,13 @@ private: bool refillRack(int i); void readyRack(int i); Rack* rack(int i) const; QWidgetStack *racks; QToolBar* toolbar; - QVBox *vbox; + QWidget *vbox; Board *board; Bag *bag; ScoreInfo *scoreinfo; QToolButton *done; QToolButton *reset; QTimer* aiheart; diff --git a/noncore/multimedia/showimg/settingsdialog.cpp b/noncore/multimedia/showimg/settingsdialog.cpp deleted file mode 100644 index d21f4cb..0000000 --- a/noncore/multimedia/showimg/settingsdialog.cpp +++ b/dev/null @@ -1,57 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#include "settingsdialog.h" -#include <qslider.h> -#include <qlabel.h> -#include <qcheckbox.h> - -SettingsDialog::SettingsDialog( QWidget *parent, const char *name, bool modal, WFlags f ) - : SettingsDialogBase( parent, name, modal, f ) -{ - connect( delaySlider, SIGNAL(valueChanged(int)), this, SLOT(delayChanged(int)) ); -} - -void SettingsDialog::setDelay( int d ) -{ - delaySlider->setValue( d ); - delayChanged( d ); -} - -int SettingsDialog::delay() const -{ - return delaySlider->value(); -} - -void SettingsDialog::setRepeat( bool r ) -{ - repeatCheck->setChecked( r ); -} - -bool SettingsDialog::repeat() const -{ - return repeatCheck->isChecked(); -} - -void SettingsDialog::delayChanged( int d ) -{ - delayText->setText( QString::number( d ) + " s" ); -} - diff --git a/noncore/multimedia/showimg/settingsdialog.h b/noncore/multimedia/showimg/settingsdialog.h deleted file mode 100644 index 6dfd2c4..0000000 --- a/noncore/multimedia/showimg/settingsdialog.h +++ b/dev/null @@ -1,42 +0,0 @@ -/********************************************************************** -** 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. -** -**********************************************************************/ - -#ifndef SETTINGSDIALOG_H -#define SETTINGSDIALOG_H - -#include "settingsdialogbase.h" - -class SettingsDialog : public SettingsDialogBase -{ - Q_OBJECT -public: - SettingsDialog( QWidget * parent=0, const char * name=0, bool modal=FALSE, WFlags f=0 ); - - void setDelay( int d ); - int delay() const; - void setRepeat( bool r ); - bool repeat() const; - -private slots: - void delayChanged( int ); -}; - - -#endif diff --git a/noncore/multimedia/showimg/settingsdialogbase.ui b/noncore/multimedia/showimg/settingsdialogbase.ui deleted file mode 100644 index ed404d8..0000000 --- a/noncore/multimedia/showimg/settingsdialogbase.ui +++ b/dev/null @@ -1,149 +0,0 @@ -<!DOCTYPE UI><UI> -<class>SettingsDialogBase</class> -<widget> - <class>QDialog</class> - <property stdset="1"> - <name>name</name> - <cstring>SettingsDialogBase</cstring> - </property> - <property stdset="1"> - <name>geometry</name> - <rect> - <x>0</x> - <y>0</y> - <width>227</width> - <height>258</height> - </rect> - </property> - <property stdset="1"> - <name>caption</name> - <string>Preferences</string> - </property> - <vbox> - <property stdset="1"> - <name>margin</name> - <number>11</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>6</number> - </property> - <widget> - <class>QGroupBox</class> - <property stdset="1"> - <name>name</name> - <cstring>GroupBox1</cstring> - </property> - <property stdset="1"> - <name>title</name> - <string>Slide Show</string> - </property> - <vbox> - <property stdset="1"> - <name>margin</name> - <number>11</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>6</number> - </property> - <widget> - <class>QCheckBox</class> - <property stdset="1"> - <name>name</name> - <cstring>repeatCheck</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Repeat</string> - </property> - </widget> - <widget> - <class>QLayoutWidget</class> - <property stdset="1"> - <name>name</name> - <cstring>Layout1</cstring> - </property> - <hbox> - <property stdset="1"> - <name>margin</name> - <number>0</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>6</number> - </property> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel1</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Delay</string> - </property> - </widget> - <widget> - <class>QSlider</class> - <property stdset="1"> - <name>name</name> - <cstring>delaySlider</cstring> - </property> - <property stdset="1"> - <name>minValue</name> - <number>5</number> - </property> - <property stdset="1"> - <name>maxValue</name> - <number>60</number> - </property> - <property stdset="1"> - <name>lineStep</name> - <number>5</number> - </property> - <property stdset="1"> - <name>orientation</name> - <enum>Horizontal</enum> - </property> - <property stdset="1"> - <name>tickmarks</name> - <enum>Right</enum> - </property> - <property stdset="1"> - <name>tickInterval</name> - <number>10</number> - </property> - </widget> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>delayText</cstring> - </property> - <property stdset="1"> - <name>minimumSize</name> - <size> - <width>25</width> - <height>0</height> - </size> - </property> - <property stdset="1"> - <name>text</name> - <string>s</string> - </property> - <property stdset="1"> - <name>alignment</name> - <set>AlignVCenter|AlignRight</set> - </property> - <property> - <name>hAlign</name> - </property> - </widget> - </hbox> - </widget> - </vbox> - </widget> - </vbox> -</widget> -</UI> diff --git a/pics/cards/circle.png b/pics/cards/circle.png Binary files differdeleted file mode 100644 index 3b006de..0000000 --- a/pics/cards/circle.png +++ b/dev/null diff --git a/pics/cards/cross.png b/pics/cards/cross.png Binary files differdeleted file mode 100644 index cac7576..0000000 --- a/pics/cards/cross.png +++ b/dev/null diff --git a/pics/inline/today.png b/pics/inline/today.png Binary files differdeleted file mode 100644 index ac244c6..0000000 --- a/pics/inline/today.png +++ b/dev/null diff --git a/pics/slideshow.png b/pics/slideshow.png Binary files differdeleted file mode 100644 index 9a7f8d5..0000000 --- a/pics/slideshow.png +++ b/dev/null |