summaryrefslogtreecommitdiff
authorzecke <zecke>2003-05-07 14:45:49 (UTC)
committer zecke <zecke>2003-05-07 14:45:49 (UTC)
commit9602e59e3baf01465f4b4139715f2196bb01e012 (patch) (side-by-side diff)
tree2d7f0dbf91e88de3981fcc82d49ba8ddc05cfbd5
parentda949558a957ec4817bf610d7c9186585c0d2d92 (diff)
downloadopie-9602e59e3baf01465f4b4139715f2196bb01e012.zip
opie-9602e59e3baf01465f4b4139715f2196bb01e012.tar.gz
opie-9602e59e3baf01465f4b4139715f2196bb01e012.tar.bz2
Add d ptr
add comments and FIXMEs three new signals for otodoaccess
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/colordialog.h1
-rw-r--r--libopie/colorpopupmenu.h1
-rw-r--r--libopie/oclickablelabel.h6
-rw-r--r--libopie/ocolorbutton.h1
-rw-r--r--libopie/odevicebutton.h4
-rw-r--r--libopie/oprocess.h6
-rw-r--r--libopie/orecurrancewidget.h3
-rw-r--r--libopie/otabbar.h4
-rw-r--r--libopie/otabinfo.h2
-rw-r--r--libopie/otabwidget.h2
-rw-r--r--libopie/oticker.h1
-rw-r--r--libopie/otimepicker.h2
-rw-r--r--libopie/owait.h3
-rw-r--r--libopie/pim/otodoaccess.h5
-rw-r--r--libopie/xmltree.h2
-rw-r--r--libopie2/opiecore/xmltree.h2
-rw-r--r--libopie2/opiepim/core/otodoaccess.h5
17 files changed, 41 insertions, 9 deletions
diff --git a/libopie/colordialog.h b/libopie/colordialog.h
index 1a6a3fd..c825a83 100644
--- a/libopie/colordialog.h
+++ b/libopie/colordialog.h
@@ -1,89 +1,90 @@
/****************************************************************************
** $Id$
**
** Definition of OColorDialog class
**
** Created : 990222
**
** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
** This file is part of the dialogs module of the Qt GUI Toolkit.
**
** This file may be distributed under the terms of the Q Public License
** as defined by Trolltech AS of Norway and appearing in the file
** LICENSE.QPL included in the packaging of this file.
**
** 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.
**
** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
** licenses may use this file in accordance with the Qt Commercial License
** Agreement provided with the Software.
**
** 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/pricing.html or email sales@trolltech.com for
** information about Qt Commercial License Agreements.
** See http://www.trolltech.com/qpl/ for QPL licensing information.
** 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 OColorDialog_H
#define OColorDialog_H
#ifndef QT_H
#include <qdialog.h>
#endif // QT_H
class OColorDialogPrivate;
/*
* @class OColorDialog
* @brief The OColorDialog class is a copy of QColorDialog for use in Opie.
*
* OColorDialog is a copy of TrollTech's QColorDialog for use in Opie. The default
* build of QT/Embedded used by Opie does not include QColorDialog, so it is provided
* here. It is renamed to prevent conflicts in the event the QColorDialog is included
* at a later date in QP/E.
*
* See http://doc.trolltech.com/2.3/qcolordialog.html for complete documentation of
* QColorDialog.
*/
class Q_EXPORT OColorDialog : public QDialog
{
Q_OBJECT
public:
static QColor getColor( const QColor&, QWidget *parent=0, const char* name=0 );
static QRgb getRgba( const QRgb&, bool* ok = 0,
QWidget *parent=0, const char* name=0 );
private:
~OColorDialog();
+ // FIXME add WFlags? -zecke
OColorDialog( QWidget* parent=0, const char* name=0, bool modal=FALSE );
void setColor( const QColor& );
QColor color() const;
private:
void setSelectedAlpha( int );
int selectedAlpha() const;
private:
OColorDialogPrivate *d;
friend class OColorDialogPrivate;
private: // Disabled copy constructor and operator=
#if defined(Q_DISABLE_COPY)
OColorDialog( const OColorDialog & );
OColorDialog& operator=( const OColorDialog & );
#endif
};
#endif
diff --git a/libopie/colorpopupmenu.h b/libopie/colorpopupmenu.h
index 3e90c5e..98d67cc 100644
--- a/libopie/colorpopupmenu.h
+++ b/libopie/colorpopupmenu.h
@@ -1,254 +1,255 @@
/*
                This file is part of the Opie Project
              Copyright (c) 2002 S. Prud'homme <prudhomme@laposte.net>
              Dan Williams <williamsdr@acm.org>
=.
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef COLORPOPUPMENU_H
#define COLORPOPUPMENU_H
#include <qframe.h>
#include <qpopupmenu.h>
class QWidget;
class QGridLayout;
/**
* @class OColorPanelButton
* @brief The OColorPanelButton class provides a button for color selection.
*
* @see OColorPopupMenu
*
* The OColorPanelButton class provides a button for color selection. The button
* is drawn with the desired color and no border. This class is used internally
* by the OColorPopupMenu class to displaying colors in its menu.
*/
class OColorPanelButton : public QFrame
{
Q_OBJECT
public:
/**
* @fn OColorPanelButton( const QColor& color, QWidget* parent = 0, const char* name = 0 )
* @brief Object constructor.
*
* @param color Desired color.
* @param parent Pointer to parent of this control.
* @param name Name of control.
*
* Constructs a new ColorPanelButton control with parent, name and desired color.
*/
OColorPanelButton(const QColor& color, QWidget* parent = 0, const char* name = 0);
/**
* @fn ~OColorPanelButton()
* @brief Object destructor.
*/
~OColorPanelButton();
/**
* @fn setActive( bool active )
* @brief Sets button selection state.
*
* @param active Boolean indicator of new button state.
*
* Changes button selection state. If button is selected, a highlighted border
* is drawn.
*/
void setActive(bool active);
/**
* @fn enterEvent( QEvent* e )
* @brief Reimplemented for internal reasons.
*
* @param e Event currently being processed.
*
* Reimplemented to ensure correct display of button based on whether it is
* active or not.
*/
void enterEvent(QEvent* e);
/**
* @fn leaveEvent( QEvent* e )
* @brief Reimplemented for internal reasons.
*
* @param e Event currently being processed.
*
* Reimplemented to ensure correct display of button based on whether it is
* active or not.
*/
void leaveEvent(QEvent* e);
/**
* @fn paintEvent( QPaintEvent* e )
* @brief Reimplemented for internal reasons.
*
* @param e Event currently being processed.
* @reimp
* Reimplemented to ensure correct display of button.
*/
void paintEvent(QPaintEvent* e);
/**
* @fn mouseReleaseEvent( QMouseEvent* e )
* @brief Slot executed when button is pressed.
*
* @param e Mouse event currently being processed.
*
* @see selected()
*
* This slot executes when the button has been pressed. It emits the selected
* signal as notification that it has been pressed.
*/
void mouseReleaseEvent(QMouseEvent* e);
signals:
/**
* @fn selected( const QColor& color )
* @brief Signal to indicate button has been pressed.
*
* @param color Button color.
*
* This signal is emitted when the button is pressed. It provides the color
* associated to this button.
*/
void selected(const QColor&);
private:
QColor m_color;
bool m_active : 1;
class ColorPanelButtonPrivate;
ColorPanelButtonPrivate *d;
};
/**
* @class OColorPopupMenu
* @brief The OColorPopupMenu class provides a small color selection
* popup menu.
*
* OColorPopupMenu is a derivation of TrollTech's QPopupMenu and provides
* a small color selection popup menu which can be attached to another control
* such as a toolbar button of menu item.
*
* The popup menu displays 30 default colors available in a grid, and also
* includes an option at the bottom to display a color selection dialog box for
* finer color control.
*/
class OColorPopupMenu : public QPopupMenu
{
Q_OBJECT
public:
/**
* @fn OColorPopupMenu( const QColor& color, QWidget* parent = 0, const char* name = 0 )
* @brief Object constructor.
*
* @param color Initial color selected in menu.
* @param parent Pointer to parent of this control.
* @param name Name of control.
*
* Constructs a new OColorPopupMenu control with parent, name and initial color selected.
*/
+ // FIXME add Wflags? -zecke
OColorPopupMenu( const QColor& color, QWidget* parent = 0, const char* name = 0 );
/**
* @fn ~OColorPopupMenu()
* @brief Object destructor.
*/
~OColorPopupMenu();
private:
class ColorPopupMenuPrivate;
ColorPopupMenuPrivate *d;
QColor m_color;
QWidget* colorPanel;
QGridLayout* colorLayout;
/**
* @fn addColor( const QColor& color, int row, int col )
* @brief Adds color selection option to popup menu.
*
* @param color Color to be displayed in menu.
* @param row Row where color is to appear in menu.
* @param col Column where color is to appear in menu.
*
* Adds a color selection option to popup menu. Used internally when
* initially constructing the menu control.
*/
void addColor( const QColor& color, int row, int col );
signals:
/**
* @fn colorSelected( const QColor& color )
* @brief Signal to indicate color chosen from the menu.
*
* @param color Color selected from the menu.
*
* This signal is emitted when a color has been selected either directly from
* the menu, or chosen from the color selection dialog.
*/
void colorSelected( const QColor& color );
protected slots:
/**
* @fn buttonSelected( const QColor& color )
* @brief Slot to process selected color.
*
* @param color Color selected from the menu.
*
* @see colorSelected()
*
* This slot executes when a color has been selected from the menu. It performs
* two functions:
* - Emit the colorSelected signal with the color selected.
* - Hide the menu.
*/
void buttonSelected( const QColor& color );
/**
* @fn moreColorClicked()
* @brief Slot to process display color selection dialog.
*
* @see colorSelected()
*
* This slot executes when the 'More...' option is selected at the bottom of the menu.
* It performs the following functions:
* - Constructs and executes a OColorDialog to allow finer color selection.
* - Emit the colorSelected signal with the color selected.
* - Hide the menu.
*/
void moreColorClicked();
};
#endif // COLORPOPUPMENUANEL_H
diff --git a/libopie/oclickablelabel.h b/libopie/oclickablelabel.h
index 6e7a123..f93ade0 100644
--- a/libopie/oclickablelabel.h
+++ b/libopie/oclickablelabel.h
@@ -1,64 +1,68 @@
#ifndef CLICKABLELABEL
#define CLICKABLELABEL
#include <qlabel.h>
/**
* This class is a special QLabel which can behave
* as a QPushButton or QToggleButton.
* The reason to use a clickable is if you want to save space
* or you want to skip the border of a normal button
*
* <pre>
* QLabel* lbl = new OClickableLabel( parent, "PushLabel" );
* lbl->setPixmap( "config" );
* QWhatsThis::add( lbl, tr("Click here to do something") );
* </pre>
*
* @short A Label behaving as button
* @author Hakan Ardo, Maximillian Reiß ( harlekin@handhelds.org )
* @see QLabel
* @see QPushButton
* @see QToggleButton
* @version 1.0
*/
class OClickableLabel: public QLabel
{
Q_OBJECT
public:
OClickableLabel(QWidget* parent = 0, const char* name = 0,
WFlags fl = 0);
void setToggleButton(bool t);
protected:
/** @internal */
void mousePressEvent( QMouseEvent *e );
/** @internal */
void mouseReleaseEvent( QMouseEvent *e );
/** @internal */
void mouseMoveEvent( QMouseEvent *e );
public slots:
void setOn(bool on);
signals:
/**
* emitted when the labels gets clicked
*/
void clicked();
/**
* emitted when the labels gets toggled
- * @param the new new state of the label
+ * @param on the new new state of the label
*/
void toggled(bool on);
private:
bool isToggle : 1;
bool isDown : 1;
bool textInverted : 1;
void showState(bool on);
void setInverted(bool on);
+
+ private:
+ class Private;
+ Private *d; // private d pointer
};
#endif
diff --git a/libopie/ocolorbutton.h b/libopie/ocolorbutton.h
index 7ff9cd2..6196c83 100644
--- a/libopie/ocolorbutton.h
+++ b/libopie/ocolorbutton.h
@@ -1,72 +1,73 @@
/*
               =. This file is part of the OPIE Project
             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
           .>+-=
 _;:,     .>    :=|. This library is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This library is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __OPIE_OCOLORBUTTON_H__
#define __OPIE_OCOLORBUTTON_H__
#include <qpushbutton.h>
class OColorButtonPrivate;
class QColor;
/**
*
* @short A Button which will show a OColorPopupMenu
* @author Robert Griebl ( sandman@handhelds.org )
* @version 1.0
* @see QPushButton
*/
class OColorButton : public QPushButton {
Q_OBJECT
public:
+ // FIXME Wflags? -zecke
OColorButton ( QWidget *parent = 0, const QColor & = black, const char *name = 0 );
virtual ~OColorButton ( );
QColor color ( ) const;
signals:
/**
* emitted when a color gets selected
*/
void colorSelected ( const QColor & );
public slots:
virtual void setColor ( const QColor & );
protected slots:
/**
* @internal
*/
virtual void updateColor ( const QColor & );
private:
OColorButtonPrivate *d;
};
#endif
diff --git a/libopie/odevicebutton.h b/libopie/odevicebutton.h
index cf91bbd..abe27d6 100644
--- a/libopie/odevicebutton.h
+++ b/libopie/odevicebutton.h
@@ -1,101 +1,105 @@
/**********************************************************************
** 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 DEVICE_BUTTON_H
#define DEVICE_BUTTON_H
#include <qpixmap.h>
#include <qstring.h>
class OQCopMessageData;
namespace Opie
{
class OQCopMessage {
public:
OQCopMessage ( );
OQCopMessage ( const OQCopMessage &copy );
OQCopMessage ( const QCString &m_channel, const QCString &message, const QByteArray &args = QByteArray ( ));
OQCopMessage &operator = ( const OQCopMessage &assign );
void setChannel ( const QCString &channel );
void setMessage ( const QCString &message );
void setData ( const QByteArray &ba );
QCString channel ( ) const;
QCString message ( ) const;
QByteArray data ( ) const;
bool send ( );
private:
void init ( const QCString &m_channel, const QCString &message, const QByteArray &args );
OQCopMessageData *d;
+ class Private;
+ Private* data;
};
/**
* This class represents a physical button on a Qtopia device. A device may
* have n "user programmable" buttons, which are number 1..n. The location
* and number of buttons will vary from device to device. userText() and pixmap()
* may be used to describe this button to the user in help documentation.
*
* @version 1.0
* @author Trolltech
* @short A representation of buttons
*/
class ODeviceButton
{
public:
ODeviceButton();
virtual ~ODeviceButton();
ushort keycode ( ) const;
QString userText ( ) const;
QPixmap pixmap ( ) const;
OQCopMessage factoryPresetPressedAction ( ) const;
OQCopMessage pressedAction ( ) const;
OQCopMessage factoryPresetHeldAction ( ) const;
OQCopMessage heldAction ( ) const;
void setKeycode ( ushort keycode );
void setUserText ( const QString& text );
void setPixmap ( const QPixmap& picture );
void setFactoryPresetPressedAction ( const OQCopMessage& qcopMessage );
void setPressedAction ( const OQCopMessage& qcopMessage );
void setFactoryPresetHeldAction ( const OQCopMessage& qcopMessage );
void setHeldAction ( const OQCopMessage& qcopMessage );
private:
ushort m_Keycode;
QString m_UserText;
QPixmap m_Pixmap;
OQCopMessage m_FactoryPresetPressedAction;
OQCopMessage m_PressedAction;
OQCopMessage m_FactoryPresetHeldAction;
OQCopMessage m_HeldAction;
+ class Private;
+ Private *d;
};
}
#endif
diff --git a/libopie/oprocess.h b/libopie/oprocess.h
index f2853b0..af7cddb 100644
--- a/libopie/oprocess.h
+++ b/libopie/oprocess.h
@@ -1,753 +1,747 @@
/* This file is part of the KDE libraries
Copyright (C) 1997 Christian Czezakte (e9025461@student.tuwien.ac.at)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
//
// KPROCESS -- A class for handling child processes in KDE without
// having to take care of Un*x specific implementation details
//
// version 0.3.1, Jan 8th 1998
//
// (C) Christian Czezatke
// e9025461@student.tuwien.ac.at
// Ported by Holger Freyther to the Open Palmtop Integrated Environment
//
#ifndef __kprocess_h__
#define __kprocess_h__
#include <sys/types.h> // for pid_t
#include <sys/wait.h>
#include <signal.h>
#include <unistd.h>
#include <qvaluelist.h>
#include <qcstring.h>
#include <qobject.h>
class QSocketNotifier;
class OProcessPrivate;
/**
* Child process invocation, monitoring and control.
*
* @sect General usage and features
*
*This class allows a KDE and OPIE application to start child processes without having
*to worry about UN*X signal handling issues and zombie process reaping.
*
*@see KProcIO
*
*Basically, this class distinguishes three different ways of running
*child processes:
*
*@li OProcess::DontCare -- The child process is invoked and both the child
*process and the parent process continue concurrently.
*
*Starting a DontCare child process means that the application is
*not interested in any notification to determine whether the
*child process has already exited or not.
*
*@li OProcess::NotifyOnExit -- The child process is invoked and both the
*child and the parent process run concurrently.
*
*When the child process exits, the OProcess instance
*corresponding to it emits the Qt signal @ref processExited().
*
*Since this signal is @em not emitted from within a UN*X
*signal handler, arbitrary function calls can be made.
*
*Be aware: When the OProcess objects gets destructed, the child
*process will be killed if it is still running!
*This means in particular, that you cannot use a OProcess on the stack
*with OProcess::NotifyOnExit.
*
*@li OProcess::Block -- The child process starts and the parent process
*is suspended until the child process exits. (@em Really not recommended
*for programs with a GUI.)
*
*OProcess also provides several functions for determining the exit status
*and the pid of the child process it represents.
*
*Furthermore it is possible to supply command-line arguments to the process
*in a clean fashion (no null -- terminated stringlists and such...)
*
*A small usage example:
*<pre>
*OProcess *proc = new OProcess;
*
**proc << "my_executable";
**proc << "These" << "are" << "the" << "command" << "line" << "args";
*QApplication::connect(proc, SIGNAL(processExited(OProcess *)),
* pointer_to_my_object, SLOT(my_objects_slot(OProcess *)));
*proc->start();
*</pre>
*
*This will start "my_executable" with the commandline arguments "These"...
*
*When the child process exits, the respective Qt signal will be emitted.
*
*@sect Communication with the child process
*
*OProcess supports communication with the child process through
*stdin/stdout/stderr.
*
*The following functions are provided for getting data from the child
*process or sending data to the child's stdin (For more information,
*have a look at the documentation of each function):
*
*@li bool @ref writeStdin(char *buffer, int buflen);
*@li -- Transmit data to the child process's stdin.
*
*@li bool @ref closeStdin();
*@li -- Closes the child process's stdin (which causes it to see an feof(stdin)).
*Returns false if you try to close stdin for a process that has been started
*without a communication channel to stdin.
*
*@li bool @ref closeStdout();
*@li -- Closes the child process's stdout.
*Returns false if you try to close stdout for a process that has been started
*without a communication channel to stdout.
*
*@li bool @ref closeStderr();
*@li -- Closes the child process's stderr.
*Returns false if you try to close stderr for a process that has been started
*without a communication channel to stderr.
*
*
*@sect QT signals:
*
*@li void @ref receivedStdout(OProcess *proc, char *buffer, int buflen);
*@li void @ref receivedStderr(OProcess *proc, char *buffer, int buflen);
*@li -- Indicates that new data has arrived from either the
*child process's stdout or stderr.
*
*@li void @ref wroteStdin(OProcess *proc);
*@li -- Indicates that all data that has been sent to the child process
*by a prior call to @ref writeStdin() has actually been transmitted to the
*client .
*
*@author Christian Czezakte e9025461@student.tuwien.ac.at
*
*
**/
class OProcess : public QObject
{
Q_OBJECT
public:
/**
* Modes in which the communication channel can be opened.
*
* If communication for more than one channel is required,
* the values have to be or'ed together, for example to get
* communication with stdout as well as with stdin, you would
* specify @p Stdin @p | @p Stdout
*
* If @p NoRead is specified in conjunction with @p Stdout,
* no data is actually read from @p Stdout but only
* the signal @ref childOutput(int fd) is emitted.
*/
enum Communication { NoCommunication = 0, Stdin = 1, Stdout = 2, Stderr = 4,
AllOutput = 6, All = 7,
NoRead };
/**
* Run-modes for a child process.
*/
enum RunMode {
/**
* The application does not receive notifications from the subprocess when
* it is finished or aborted.
*/
DontCare,
/**
* The application is notified when the subprocess dies.
*/
NotifyOnExit,
/**
* The application is suspended until the started process is finished.
*/
Block };
/**
* Constructor
*/
OProcess(QObject *parent = 0, const char *name = 0);
/**
* Constructor
*/
OProcess(const QString &arg0, QObject *parent = 0, const char *name = 0);
/**
* Constructor
*/
OProcess(const QStringList &args, QObject *parent = 0, const char *name = 0);
/**
*Destructor:
*
* If the process is running when the destructor for this class
* is called, the child process is killed with a SIGKILL, but
* only if the run mode is not of type @p DontCare.
* Processes started as @p DontCare keep running anyway.
*/
virtual ~OProcess();
/**
@deprecated
The use of this function is now deprecated. -- Please use the
"operator<<" instead of "setExecutable".
Sets the executable to be started with this OProcess object.
Returns false if the process is currently running (in that
case the executable remains unchanged.)
@see operator<<
*/
bool setExecutable(const QString& proc);
/**
* Sets the executable and the command line argument list for this process.
*
* For example, doing an "ls -l /usr/local/bin" can be achieved by:
* <pre>
* OProcess p;
* ...
* p << "ls" << "-l" << "/usr/local/bin"
* </pre>
*
**/
OProcess &operator<<(const QString& arg);
/**
* Similar to previous method, takes a char *, supposed to be in locale 8 bit already.
*/
OProcess &operator<<(const char * arg);
/**
* Similar to previous method, takes a QCString, supposed to be in locale 8 bit already.
*/
OProcess &operator<<(const QCString & arg);
/**
* Sets the executable and the command line argument list for this process,
* in a single method call, or add a list of arguments.
**/
OProcess &operator<<(const QStringList& args);
/**
* Clear a command line argument list that has been set by using
* the "operator<<".
*/
void clearArguments();
/**
* Starts the process.
* For a detailed description of the
* various run modes and communication semantics, have a look at the
* general description of the OProcess class.
*
* The following problems could cause this function to
* return false:
*
* @li The process is already running.
* @li The command line argument list is empty.
* @li The starting of the process failed (could not fork).
* @li The executable was not found.
*
* @param comm Specifies which communication links should be
* established to the child process (stdin/stdout/stderr). By default,
* no communication takes place and the respective communication
* signals will never get emitted.
*
* @return true on success, false on error
* (see above for error conditions)
**/
virtual bool start(RunMode runmode = NotifyOnExit,
Communication comm = NoCommunication);
/**
* Stop the process (by sending it a signal).
*
* @param signo The signal to send. The default is SIGTERM.
* @return @p true if the signal was delivered successfully.
*/
virtual bool kill(int signo = SIGTERM);
/**
@return @p true if the process is (still) considered to be running
*/
bool isRunning() const;
/** Returns the process id of the process.
*
* If it is called after
* the process has exited, it returns the process id of the last
* child process that was created by this instance of OProcess.
*
* Calling it before any child process has been started by this
* OProcess instance causes pid() to return 0.
**/
pid_t pid() const;
/**
- * Use pid().
- * @deprecated
- */
- pid_t getPid() const { return pid(); }
-
- /**
* Suspend processing of data from stdout of the child process.
*/
void suspend();
/**
* Resume processing of data from stdout of the child process.
*/
void resume();
/**
* @return @p true if the process has already finished and has exited
* "voluntarily", ie: it has not been killed by a signal.
*
* Note that you should check @ref OProcess::exitStatus() to determine
* whether the process completed its task successful or not.
*/
bool normalExit() const;
/**
* Returns the exit status of the process.
*
* Please use
* @ref OProcess::normalExit() to check whether the process has exited
* cleanly (i.e., @ref OProcess::normalExit() returns @p true) before calling
* this function because if the process did not exit normally,
* it does not have a valid exit status.
*/
int exitStatus() const;
/**
* Transmit data to the child process's stdin.
*
* OProcess::writeStdin may return false in the following cases:
*
* @li The process is not currently running.
*
* @li Communication to stdin has not been requested in the @ref start() call.
*
* @li Transmission of data to the child process by a previous call to
* @ref writeStdin() is still in progress.
*
* Please note that the data is sent to the client asynchronously,
* so when this function returns, the data might not have been
* processed by the child process.
*
* If all the data has been sent to the client, the signal
* @ref wroteStdin() will be emitted.
*
* Please note that you must not free "buffer" or call @ref writeStdin()
* again until either a @ref wroteStdin() signal indicates that the
* data has been sent or a @ref processHasExited() signal shows that
* the child process is no longer alive...
**/
bool writeStdin(const char *buffer, int buflen);
void flushStdin();
/**
* This causes the stdin file descriptor of the child process to be
* closed indicating an "EOF" to the child.
*
* @return @p false if no communication to the process's stdin
* had been specified in the call to @ref start().
*/
bool closeStdin();
/**
* This causes the stdout file descriptor of the child process to be
* closed.
*
* @return @p false if no communication to the process's stdout
* had been specified in the call to @ref start().
*/
bool closeStdout();
/**
* This causes the stderr file descriptor of the child process to be
* closed.
*
* @return @p false if no communication to the process's stderr
* had been specified in the call to @ref start().
*/
bool closeStderr();
/**
* Lets you see what your arguments are for debugging.
*/
const QValueList<QCString> &args() { return arguments; }
/**
* Controls whether the started process should drop any
* setuid/segid privileges or whether it should keep them
*
* The default is @p false : drop privileges
*/
void setRunPrivileged(bool keepPrivileges);
/**
* Returns whether the started process will drop any
* setuid/segid privileges or whether it will keep them
*/
bool runPrivileged() const;
/**
* Modifies the environment of the process to be started.
* This function must be called before starting the process.
*/
void setEnvironment(const QString &name, const QString &value);
/**
* Changes the current working directory (CWD) of the process
* to be started.
* This function must be called before starting the process.
*/
void setWorkingDirectory(const QString &dir);
/**
* Specify whether to start the command via a shell or directly.
* The default is to start the command directly.
* If @p useShell is true @p shell will be used as shell, or
* if shell is empty, the standard shell is used.
* @p quote A flag indicating whether to quote the arguments.
*
* When using a shell, the caller should make sure that all filenames etc.
* are properly quoted when passed as argument.
* @see quote()
*/
void setUseShell(bool useShell, const char *shell = 0);
/**
* This function can be used to quote an argument string such that
* the shell processes it properly. This is e. g. necessary for
* user-provided file names which may contain spaces or quotes.
* It also prevents expansion of wild cards and environment variables.
*/
static QString quote(const QString &arg);
/**
* Detaches OProcess from child process. All communication is closed.
* No exit notification is emitted any more for the child process.
* Deleting the OProcess will no longer kill the child process.
* Note that the current process remains the parent process of the
* child process.
*/
void detach();
signals:
/**
* Emitted after the process has terminated when
* the process was run in the @p NotifyOnExit (==default option to
* @ref start()) or the @ref Block mode.
**/
void processExited(OProcess *proc);
/**
* Emitted, when output from the child process has
* been received on stdout.
*
* To actually get
* these signals, the respective communication link (stdout/stderr)
* has to be turned on in @ref start().
*
* @param buffer The data received.
* @param buflen The number of bytes that are available.
*
* You should copy the information contained in @p buffer to your private
* data structures before returning from this slot.
**/
void receivedStdout(OProcess *proc, char *buffer, int buflen);
/**
* Emitted when output from the child process has
* been received on stdout.
*
* To actually get these signals, the respective communications link
* (stdout/stderr) has to be turned on in @ref start() and the
* @p NoRead flag should have been passed.
*
* You will need to explicitly call resume() after your call to start()
* to begin processing data from the child process's stdout. This is
* to ensure that this signal is not emitted when no one is connected
* to it, otherwise this signal will not be emitted.
*
* The data still has to be read from file descriptor @p fd.
**/
void receivedStdout(int fd, int &len);
/**
* Emitted, when output from the child process has
* been received on stderr.
* To actually get
* these signals, the respective communication link (stdout/stderr)
* has to be turned on in @ref start().
*
* @param buffer The data received.
* @param buflen The number of bytes that are available.
*
* You should copy the information contained in @p buffer to your private
* data structures before returning from this slot.
*/
void receivedStderr(OProcess *proc, char *buffer, int buflen);
/**
* Emitted after all the data that has been
* specified by a prior call to @ref writeStdin() has actually been
* written to the child process.
**/
void wroteStdin(OProcess *proc);
protected slots:
/**
* This slot gets activated when data from the child's stdout arrives.
* It usually calls "childOutput"
*/
void slotChildOutput(int fdno);
/**
* This slot gets activated when data from the child's stderr arrives.
* It usually calls "childError"
*/
void slotChildError(int fdno);
/*
Slot functions for capturing stdout and stderr of the child
*/
/**
* Called when another bulk of data can be sent to the child's
* stdin. If there is no more data to be sent to stdin currently
* available, this function must disable the QSocketNotifier "innot".
*/
void slotSendData(int dummy);
protected:
/**
* Sets up the environment according to the data passed via
* setEnvironment(...)
*/
void setupEnvironment();
/**
* The list of the process' command line arguments. The first entry
* in this list is the executable itself.
*/
QValueList<QCString> arguments;
/**
* How to run the process (Block, NotifyOnExit, DontCare). You should
* not modify this data member directly from derived classes.
*/
RunMode run_mode;
/**
* true if the process is currently running. You should not
* modify this data member directly from derived classes. For
* reading the value of this data member, please use "isRunning()"
* since "runs" will probably be made private in later versions
* of OProcess.
*/
bool runs;
/**
* The PID of the currently running process (see "getPid()").
* You should not modify this data member in derived classes.
* Please use "getPid()" instead of directly accessing this
* member function since it will probably be made private in
* later versions of OProcess.
*/
pid_t pid_;
/**
* The process' exit status as returned by "waitpid". You should not
* modify the value of this data member from derived classes. You should
* rather use @ref exitStatus than accessing this data member directly
* since it will probably be made private in further versions of
* OProcess.
*/
int status;
/**
* See setRunPrivileged()
*/
bool keepPrivs;
/*
Functions for setting up the sockets for communication.
setupCommunication
-- is called from "start" before "fork"ing.
commSetupDoneP
-- completes communication socket setup in the parent
commSetupDoneC
-- completes communication setup in the child process
commClose
-- frees all allocated communication resources in the parent
after the process has exited
*/
/**
* This function is called from "OProcess::start" right before a "fork" takes
* place. According to
* the "comm" parameter this function has to initialize the "in", "out" and
* "err" data member of OProcess.
*
* This function should return 0 if setting the needed communication channels
* was successful.
*
* The default implementation is to create UNIX STREAM sockets for the communication,
* but you could overload this function and establish a TCP/IP communication for
* network communication, for example.
*/
virtual int setupCommunication(Communication comm);
/**
* Called right after a (successful) fork on the parent side. This function
* will usually do some communications cleanup, like closing the reading end
* of the "stdin" communication channel.
*
* Furthermore, it must also create the QSocketNotifiers "innot", "outnot" and
* "errnot" and connect their Qt slots to the respective OProcess member functions.
*
* For a more detailed explanation, it is best to have a look at the default
* implementation of "setupCommunication" in kprocess.cpp.
*/
virtual int commSetupDoneP();
/**
* Called right after a (successful) fork, but before an "exec" on the child
* process' side. It usually just closes the unused communication ends of
* "in", "out" and "err" (like the writing end of the "in" communication
* channel.
*/
virtual int commSetupDoneC();
/**
* Immediately called after a process has exited. This function normally
* calls commClose to close all open communication channels to this
* process and emits the "processExited" signal (if the process was
* not running in the "DontCare" mode).
*/
virtual void processHasExited(int state);
/**
* Should clean up the communication links to the child after it has
* exited. Should be called from "processHasExited".
*/
virtual void commClose();
/**
* the socket descriptors for stdin/stdout/stderr.
*/
int out[2];
int in[2];
int err[2];
/**
* The socket notifiers for the above socket descriptors.
*/
QSocketNotifier *innot;
QSocketNotifier *outnot;
QSocketNotifier *errnot;
/**
* Lists the communication links that are activated for the child
* process. Should not be modified from derived classes.
*/
Communication communication;
/**
* Called by "slotChildOutput" this function copies data arriving from the
* child process's stdout to the respective buffer and emits the signal
* "@ref receivedStderr".
*/
int childOutput(int fdno);
/**
* Called by "slotChildOutput" this function copies data arriving from the
* child process's stdout to the respective buffer and emits the signal
* "@ref receivedStderr"
*/
int childError(int fdno);
// information about the data that has to be sent to the child:
const char *input_data; // the buffer holding the data
int input_sent; // # of bytes already transmitted
int input_total; // total length of input_data
/**
* @ref OProcessController is a friend of OProcess because it has to have
* access to various data members.
*/
friend class OProcessController;
private:
/**
* Searches for a valid shell.
* Here is the algorithm used for finding an executable shell:
*
* @li Try the executable pointed to by the "SHELL" environment
* variable with white spaces stripped off
*
* @li If your process runs with uid != euid or gid != egid, a shell
* not listed in /etc/shells will not used.
*
* @li If no valid shell could be found, "/bin/sh" is used as a last resort.
*/
QCString searchShell();
/**
* Used by @ref searchShell in order to find out whether the shell found
* is actually executable at all.
*/
bool isExecutable(const QCString &filename);
// Disallow assignment and copy-construction
OProcess( const OProcess& );
OProcess& operator= ( const OProcess& );
private:
void init ( );
OProcessPrivate *d;
};
#endif
diff --git a/libopie/orecurrancewidget.h b/libopie/orecurrancewidget.h
index a5d6489..37a57f0 100644
--- a/libopie/orecurrancewidget.h
+++ b/libopie/orecurrancewidget.h
@@ -1,90 +1,93 @@
/*
* GPL and based on the widget from TT
*/
#ifndef OPIE_RECURRANCE_WIDGET_H
#define OPIE_RECURRANCE_WIDGET_H
#include <qlist.h>
#include <qtoolbutton.h>
#include <qcheckbox.h>
#include <qdatetime.h>
#include <qbuttongroup.h>
#include <qpe/datebookmonth.h>
#include "orecurrancebase.h"
#include <opie/orecur.h>
// FIXME spelling!!!! -zecke
// FIXME spelling filenames
/**
* A widget to let the user select rules for recurrences.
* This widget can take care of weekly, monthly, daily and yearly recurrence
* It is used inside todolist and datebook.
*
*
* @short Widget of selecting Recurrance
* @author Trolltech, Holger Freyther
* @version 0.9
*/
class ORecurranceWidget : public ORecurranceBase {
Q_OBJECT
public:
ORecurranceWidget( bool startOnMonday,
const QDate& start, QWidget* parent = 0,
const char* name = 0, bool modal = TRUE,
WFlags fl = 0 );
ORecurranceWidget( bool startOnMonday,
const ORecur& rp, const QDate& start,
QWidget* parent = 0, const char* name =0,
bool modal = TRUE, WFlags = 0 );
~ORecurranceWidget();
ORecur recurrence()const;
QDate endDate()const;
public slots:
void slotSetRType( int );
/**
* set the new end date
*/
void endDateChanged( int, int, int );
/**
* enable/disable end date
*/
void slotNoEnd( bool unused );
void setStartDate( const QDate& );
void setRecurrence( const ORecur& recur, const QDate& start );
void setRecurrence( const ORecur& recur );
private slots:
void setupRepeatLabel( const QString& );
void setupRepeatLabel( int );
void slotWeekLabel();
void slotMonthLabel( int );
void slotChangeStartOfWeek( bool onMonday );
private:
void setupNone();
void setupDaily();
void setupWeekly();
void setupMonthly();
void setupYearly();
enum repeatButtons { None, Day, Week, Month, Year };
void init();
void hideExtras();
void showRepeatStuff();
QList<QToolButton> listRTypeButtons;
QList<QToolButton> listExtra;
QDate start; // only used in one spot...
QDate end;
repeatButtons currInterval;
bool startWeekOnMonday : 1;
DateBookMonth *repeatPicker;
+ class Private;
+ Private *d;
+
};
#endif
diff --git a/libopie/otabbar.h b/libopie/otabbar.h
index 0b353e2..668187b 100644
--- a/libopie/otabbar.h
+++ b/libopie/otabbar.h
@@ -1,76 +1,80 @@
/*
                This file is part of the Opie Project
              Copyright (c) 2002 Dan Williams <williamsdr@acm.org>
=.
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef OTABBAR_H
#define OTABBAR_H
#include <qtabbar.h>
/**
* @class OTabBar
* @brief The OTabBar class is a derivative of QTabBar.
*
* OTabBar is a derivation of TrollTech's QTabBar which provides
* a row of tabs for selection. The only difference between this
* class and QTabBar is that there is no dotted line box around
* the label of the tab with the current focus.
*/
class OTabBar : public QTabBar
{
Q_OBJECT
public:
/**
* @fn OTabBar( QWidget *parent = 0, const char *name = 0 )
* @brief Object constructor.
*
* @param parent Pointer to parent of this control.
* @param name Name of control.
*
* Constructs a new OTabBar control with parent and name.
*/
// FIXME Allow WFlags? -zecke
OTabBar( QWidget * = 0, const char * = 0 );
protected:
/**
* @fn paintLabel( QPainter* p, const QRect& br , QTab* t, bool has_focus)const
* @brief Internal function to draw a tab's label.
*
* @param p Pointer to QPainter used for drawing.
* @param br QRect providing region to draw label in.
* @param t Tab to draw label for.
* @param has_focus Boolean value not used, retained for compatibility reasons.
*/
void paintLabel( QPainter *, const QRect &, QTab *, bool ) const;
+
+private:
+ class Private;
+ Private *d;
};
#endif
diff --git a/libopie/otabinfo.h b/libopie/otabinfo.h
index eebaf8e..00bb06d 100644
--- a/libopie/otabinfo.h
+++ b/libopie/otabinfo.h
@@ -1,132 +1,134 @@
/*
                This file is part of the Opie Project
              Copyright (c) 2002 Dan Williams <williamsdr@acm.org>
=.
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef OTABINFO_H
#define OTABINFO_H
#include <qlist.h>
#include <qstring.h>
class QWidget;
/**
* @class OTabInfo
* @brief The OTabInfo class is used internally by OTabWidget to keep track
* of widgets added to the control.
*
* OTabInfo provides the following information about a widget added to an
* OTabWidget control:
*
* ID - integer tab bar ID
* Control - QWidget pointer to child widget
* Label - QString text label for OTabWidget selection control
* Icon - QString name of icon file
*/
class OTabInfo
{
public:
/**
* @fn OTabInfo()
* @brief Object constructor.
*
* @param parent Pointer to parent of this control.
* @param name Name of control.
* @param s Style of widget selection control.
* @param p Position of the widget selection control.
*/
OTabInfo() : i( -1 ), c( 0 ), p( 0 ), l( QString::null ) {}
/**
* @fn OTabInfo( int id, QWidget *control, const QString &icon, const QString &label )
* @brief Object constructor.
*
* @param id TabBar identifier for widget.
* @param control QWidget pointer to widget.
* @param icon QString name of icon file.
* @param label QString text label for OTabWidget selection control.
*/
OTabInfo( int id, QWidget *control, const QString &icon, const QString &label )
: i( id ), c( control ), p( icon ), l( label ) {}
/**
* @fn id()const
* @brief Returns TabBar ID.
*/
int id() const { return i; }
/**
* @fn label()const
* @brief Returns text label for widget.
*/
const QString &label() const { return l; }
/**
* @fn setLabel( const QString &label )
* @brief Set label for tab.
*
* @param label QString text label for OTabWidget selection control.
*/
void setLabel( const QString &label ) { l = label; }
/**
* @fn control()const
* @brief Returns pointer to widget.
*/
QWidget *control() const { return c; }
/**
* @fn icon()const
* @brief Returns name of icon file.
*/
const QString &icon() const { return p; }
/**
* @fn setIcon( const QString &icon )
* @brief Set icon for tab.
*
* @param icon QString name of icon file.
*/
void setIcon( const QString &icon ) { p = icon; }
private:
int i;
QWidget *c;
QString p;
QString l;
+ class Private;
+ Private *d;
};
/**
* @class OTabInfoList
* @brief A list of OTabInfo objects used by OTabWidget.
*/
typedef QList<OTabInfo> OTabInfoList;
#endif
diff --git a/libopie/otabwidget.h b/libopie/otabwidget.h
index a67fe06..c140c0b 100644
--- a/libopie/otabwidget.h
+++ b/libopie/otabwidget.h
@@ -1,276 +1,278 @@
/*
                This file is part of the Opie Project
              Copyright (c) 2002 Dan Williams <williamsdr@acm.org>
=.
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef OTABWIDGET_H
#define OTABWIDGET_H
#include "otabinfo.h"
#include <qwidget.h>
#include <qlist.h>
class OTabBar;
class QComboBox;
class QPixmap;
class QTabBar;
class QWidgetStack;
/**
* @class OTabWidget
* @brief The OTabWidget class provides a stack of widgets.
*
* OTabWidget is a derivation of TrollTech's QTabWidget which provides
* a stack of widgets. Widgets can be selected using either a tab bar or
* drop down list box.
*
* The normal way to use OTabWidget is to do the following in the
* constructor:
* - Create a OTabWidget.
* - Create a QWidget for each of the pages in the control, insert
* children into it, set up geometry management for it, and use addTab()
* to add the widget.
*/
class OTabWidget : public QWidget
{
Q_OBJECT
public:
/**
* @enum TabStyle
* @brief Defines how the widget selection control is displayed.
*
* Valid values:
* - Global: use globally selected options (qpe.conf - TabStyle & TabPosition)
* - TextTab: Tabbed widget selection with text labels
* - IconTab: Tabbed widget selection with icon labels, text label for active widget
* (similar to Opie launcher)
* - TextList: Drop down list widget selection with text labels
* - IconList: Drop down list widget selection with icon & text labels
*/
enum TabStyle { Global, TextTab, IconTab, TextList, IconList };
/**
* @enum TabPosition
* @brief Defines where the widget selection control is drawn.
*
* Valid values:
* - Top: Widget selection control is drawn above widgets
* - Bottom: Widget selection control is drawn below widgets
*/
enum TabPosition { Top, Bottom };
/**
* @fn OTabWidget( QWidget *parent = 0, const char *name = 0, TabStyle s = Global, TabPosition p = Top )
* @brief Object constructor.
*
* @param parent Pointer to parent of this control.
* @param name Name of control.
* @param s Style of widget selection control.
* @param p Position of the widget selection control.
*
* Constructs a new OTabWidget control with parent and name. The style and position parameters
* determine how the widget selection control will be displayed.
*/
// FIXME WFlags? -zecke
OTabWidget( QWidget * = 0, const char * = 0, TabStyle = Global, TabPosition = Top );
/**
* @fn ~OTabWidget()
* @brief Object destructor.
*/
~OTabWidget();
/**
* @fn addTab( QWidget *child, const QString &icon, const QString &label )
* @brief Add new widget to control.
*
* @param child Widget control.
* @param icon Path to icon.
* @param label Text label.
*/
void addTab( QWidget *, const QString &, const QString & );
/**
* @fn removePage( QWidget *widget )
* @brief Remove widget from control. Does not delete widget.
*
* @param widget Widget control to be removed.
*/
void removePage( QWidget * );
/**
* @fn changeTab( QWidget *widget, const QString &icon, const QString &label )
* @brief Change text and/or icon for existing tab
*
* @param child Widget control.
* @param icon Path to icon.
* @param label Text label.
*/
void changeTab( QWidget *, const QString &, const QString & );
/**
* @fn tabStyle()const
* @brief Returns current widget selection control style.
*/
TabStyle tabStyle() const;
/**
* @fn setTabStyle( TabStyle s )
* @brief Set the current widget selection control style.
*
* @param s New style to be used.
*/
void setTabStyle( TabStyle );
/**
* @fn tabPosition()const
* @brief Returns current widget selection control position.
*/
TabPosition tabPosition() const;
/**
* @fn setTabPosition( TabPosition p )
* @brief Set the current widget selection control position.
*
* @param p New position of widget selection control.
*/
void setTabPosition( TabPosition );
/**
* @fn setCurrentTab( QWidget *childwidget )
* @brief Selects and brings to top the desired widget by using widget pointer.
*
* @param childwidget Widget to select.
*/
void setCurrentTab( QWidget * );
/**
* @fn setCurrentTab( const QString &tabname )
* @brief Selects and brings to top the desired widget, by using label.
*
* @param tabname Text label for widget to select.
*/
void setCurrentTab( const QString & );
/**
* @fn setCurrentTab( int )
* @brief Selects and brings to top the desired widget, by using id.
*
* @param tab id for widget to select.
*/
void setCurrentTab(int);
/**
* @fn sizeHint()const
* @brief Reimplemented for internal purposes.
*/
QSize sizeHint() const;
/**
* @fn currentTab( )
* @brief returns current tab id.
*/
int currentTab();
protected:
/**
* @fn resizeEvent( QResizeEvent * )
* @brief Reimplemented for internal purposes.
*/
void resizeEvent( QResizeEvent * );
private:
OTabInfoList tabs;
OTabInfo *currTab;
TabStyle tabBarStyle;
TabPosition tabBarPosition;
QWidgetStack *tabBarStack;
OTabBar *tabBar;
QComboBox *tabList;
QWidgetStack *widgetStack;
+ class Private;
+ Private* d;
/**
* @fn loadSmooth( const QString &name )
* @brief Loads icon for widget.
*
* @param name Name of icon image file.
*/
QPixmap loadSmooth( const QString & );
/**
* @fn selectTab( OTabInfo *tab )
* @brief Internal function to select desired widget.
*
* @param tab Pointer to data for widget.
*/
void selectTab( OTabInfo * );
/**
* @fn setUpLayout()
* @brief Internal function to adjust layout.
*/
void setUpLayout();
signals:
/**
* @fn currentChanegd( QWidget *widget )
* @brief This signal is emitted whenever the widget has changed.
*
* @param widget Pointer to new current widget.
*/
void currentChanged( QWidget * );
private slots:
/**
* @fn slotTabBarSelected( int id )
* @brief Slot which is called when a tab is selected.
*
* @param id ID of widget selected.
*/
void slotTabBarSelected( int );
/**
* @fn slotTabListSelected( int index )
* @brief Slot which is called when a drop down selection is made.
*
* @param id Index of widget selected.
*/
void slotTabListSelected( int );
};
#endif
diff --git a/libopie/oticker.h b/libopie/oticker.h
index c848654..c52e317 100644
--- a/libopie/oticker.h
+++ b/libopie/oticker.h
@@ -1,147 +1,148 @@
/*
                This file is part of the Opie Project
Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
=.
.=l.
           .>+-=
 _;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU General Public
.="- .-=="i,     .._ License as published by the Free Software
 - .   .-<_>     .<> Foundation; either version 2 of the License,
     ._= =}       : or (at your option) any later version.
    .%`+i>       _;_.
    .i_,=:_.      -<s. This program is distributed in the hope that
     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
    : ..    .:,     . . . without even the implied warranty of
    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef OTICKER_H
#define OTICKER_H
#include <qwidget.h>
#include <qpainter.h>
#include <qdrawutil.h>
#include <qpixmap.h>
#include <qstring.h>
#include <qslider.h>
#include <qlabel.h>
#include <qframe.h>
#include <qcolor.h>
/**
* @class OTicker
* @brief The OTicker class provides a QLabel widget that scroll its contents
*
*/
class OTicker : public QLabel {
Q_OBJECT
public:
/*!
* @fn OTicker( QWidget* parent = 0 )
* @brief Object constructor.
*
* @param parent Pointer to parent of this control.
* Constructs a new OTicker control with parent
*/
OTicker( QWidget* parent=0 );
/*!
* @fn ~OTicker()
* @brief Object destructor.
*/
~OTicker();
/*!
* @fn setText(const QString& )
* @brief sets text to be displayed
* @param text QString text to be displayed.
*
*/
void setText( const QString& text ) ;
/*!
* @fn setBackgroundColor(QColor color)
* @brief sets color of the ticker's background
* @param color QColor color to be set.
*
*/
//FIXME const QColor& please -zecke
void setBackgroundColor(QColor color);
/*!
* @fn setForegroundColor(QColor color)
* @brief sets color of text
* @param color QColor color of text
*
*/
+ // FIXME const QColor& please -zecke
void setForegroundColor(QColor color);
/*!
* @fn setFrame(int style)
* @brief sets frame style
* @param style int Frame style to be see. See Qt::WidgetFlags.
*
*/
void setFrame(int style);
/*!
* @fn setUpdateTime(int timeout)
* @brief sets time of update
* @param timeout int time in milliseconds between updates.
*
*/
void setUpdateTime(int timeout);
/*!
* @fn setScrollLength(int length)
* @brief sets amount of scrolling default is 1
* @param length int scroll length.
*
*/
void setScrollLength(int length);
signals:
/*!
* @fn mousePressed()
* @brief signal mouse press event
*
*/
void mousePressed();
protected:
/*!
* @fn timerEvent( QTimerEvent * e)
* @brief timer timeout event
* @param e QEvent see QEvent.
*
*/
void timerEvent( QTimerEvent * e);
/*!
* @fn drawContents( QPainter *p )
* @brief draws widget contents
* @param p QPainter. see QPainter
*
*/
void drawContents( QPainter *p );
/*!
* @fn mouseReleaseEvent( QMouseEvent *e)
* @brief mouse release event
* @param e QMouseEvent. see QMouseEvent.
*
*/
void mouseReleaseEvent( QMouseEvent *e);
private:
QColor backgroundcolor, foregroundcolor;
QString scrollText;
QPixmap scrollTextPixmap;
int pos, updateTimerTime, scrollLength;
};
#endif
diff --git a/libopie/otimepicker.h b/libopie/otimepicker.h
index d501a95..6a9e040 100644
--- a/libopie/otimepicker.h
+++ b/libopie/otimepicker.h
@@ -1,81 +1,83 @@
#ifndef OTIMEPICKER_H
#define OTIMEPICKER_H
#include <qwidget.h>
#include <qvaluelist.h>
#include <qdatetime.h>
#include <qdialog.h>
#include <opie/oclickablelabel.h>
#include "otimepickerbase.h"
/**
* A class to pick time. It uses clickable labels
* internally to allow a quick selection of a time.
* A time can be selected by two clicks of a user
*
* @short A widget to quickly pick a QTime
* @version 1.0
* @see QWidget
* @see QTime
* @author Hakan Ardo, Stefan Eilers
*/
class OTimePicker: public QWidget {
Q_OBJECT
public:
OTimePicker(QWidget* parent = 0, const char* name = 0,
WFlags fl = 0);
public slots:
void setHour(int h);
void setMinute(int m);
void setTime( const QTime& );
void setTime( int h, int m );
public:
QTime time()const;
private:
QValueList<OClickableLabel *> hourLst;
QValueList<OClickableLabel *> minuteLst;
QTime tm;
struct Private;
Private *d;
private slots:
void slotHour(bool b);
void slotMinute(bool b);
signals:
/**
* gets emitted when the time got changed by the user
*/
void timeChanged(const QTime &);
};
/**
*
* @short A small dialog to pick a time
* @version 1.0
* @author Stefan Eilers
*/
class OTimePickerDialog: public OTimePickerDialogBase {
Q_OBJECT
public:
OTimePickerDialog ( QWidget* parent = 0, const char* name = NULL, WFlags fl = 0 );
~OTimePickerDialog() { };
QTime time()const;
public slots:
void setTime( const QTime& time );
void setHour( const QString& hour );
void setMinute( const QString& minute );
private:
QTime m_time;
+ class Private;
+ Private* d;
};
#endif
diff --git a/libopie/owait.h b/libopie/owait.h
index 6217e31..cbfc8d6 100644
--- a/libopie/owait.h
+++ b/libopie/owait.h
@@ -1,74 +1,77 @@
/* This file is part of the OPIE libraries
Copyright (C) 2003 Maximilian Reiss (harlekin@handhelds.org)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef WAITPOPUP_H
#define WAITPOPUP_H
#include <qdialog.h>
#include <qpixmap.h>
#include <qlabel.h>
#include <qtimer.h>
/**
* This class displays a animated waiting icon in the middle of the screen.
*
* @short modal hour glass dialog
* @see QDialog
* @author Maximilian Reiß
*/
class OWait : public QDialog {
Q_OBJECT
public:
+ // FIXME Wflags -zecke?
OWait(QWidget *parent=0,const char* name=0, bool dispIcon=TRUE);
~OWait();
/**
* reimplemented for control reasons
*/
void show();
/**
* Set the time before the icon will be automaticly hidden
* The timer will be started once the widget will be shown.
* @param length - time in seconds
*/
void setTimerLength( int length );
public slots:
/**
* reimplemented for control reasons
*/
void hide();
private:
void timerEvent( QTimerEvent * ) ;
void paintEvent( QPaintEvent * );
QPixmap m_pix;
QLabel *m_lb;
QTimer *m_waitTimer;
int m_timerLength;
int m_aniSize;
+ class Private;
+ Private *d;
};
#endif
diff --git a/libopie/pim/otodoaccess.h b/libopie/pim/otodoaccess.h
index 2bb87dc..a626731 100644
--- a/libopie/pim/otodoaccess.h
+++ b/libopie/pim/otodoaccess.h
@@ -1,87 +1,90 @@
#ifndef OPIE_TODO_ACCESS_H
#define OPIE_TODO_ACCESS_H
#include <qobject.h>
#include <qvaluelist.h>
#include "otodo.h"
#include "otodoaccessbackend.h"
#include "opimaccesstemplate.h"
/**
* OTodoAccess
* the class to get access to
* the todolist
*/
class OTodoAccess : public QObject, public OPimAccessTemplate<OTodo> {
Q_OBJECT
public:
enum SortOrder { Completed = 0,
Priority,
Description,
Deadline };
enum SortFilter{ Category =1,
OnlyOverDue= 2,
DoNotShowCompleted =4 };
/**
* if you use 0l
* the default resource will be
* picked up
*/
OTodoAccess( OTodoAccessBackend* = 0l, enum Access acc = Random );
~OTodoAccess();
/* our functions here */
/**
* include todos from start to end
* includeNoDates whether or not to include
* events with no dates
*/
List effectiveToDos( const QDate& start,
const QDate& end,
bool includeNoDates = true );
/**
* start
* end date taken from the currentDate()
*/
List effectiveToDos( const QDate& start,
bool includeNoDates = true );
/**
* return overdue OTodos
*/
List overDue();
/**
*
*/
List sorted( bool ascending, int sortOrder, int sortFilter, int cat );
/**
* merge a list of OTodos into
* the resource
*/
void mergeWith( const QValueList<OTodo>& );
/**
* delete all already completed items
*/
void removeAllCompleted();
signals:
/**
* if the OTodoAccess was changed
*/
- void signalChanged( const OTodoAccess* );
+ void changed( const OTodoAccess* );
+ void changed( const OTodoAccess*, int uid );
+ void added( const OTodoAccess*, int uid );
+ void removed( const OTodoAccess*, int uid );
private:
int m_cat;
OTodoAccessBackend* m_todoBackEnd;
class OTodoAccessPrivate;
OTodoAccessPrivate* d;
};
#endif
diff --git a/libopie/xmltree.h b/libopie/xmltree.h
index 4a6b6d9..4b6bdfa 100644
--- a/libopie/xmltree.h
+++ b/libopie/xmltree.h
@@ -1,117 +1,119 @@
/* This file is part of the KDE project
Copyright (C) 2000,2001 Simon Hausmann <hausmann@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __bookmarks_h__
#define __bookmarks_h__
#include <qstring.h>
#include <qmap.h>
#include <qtextstream.h>
namespace Opie
{
/**
* A small xml lib written by Simon Hausmann.
*/
class XMLElement
{
public:
typedef QMap<QString, QString> AttributeMap;
/**
* The constructor of XMLElement
*/
XMLElement();
~XMLElement();
/** appendChild appends a child to the XMLElement behind the last element.
* The ownership of the child get's transfered to the
* this XMLElement.
* If child is already the child of another parent
* it's get removed from the other parent first.
*/
void appendChild( XMLElement *child );
/** inserts newChild after refChild. If newChild is the child
* of another parent the child will get removed.
* The ownership of child gets transfered.
*
*/
void insertAfter( XMLElement *newChild, XMLElement *refChild );
/** same as insertAfter but the element get's inserted before refChild.
*
*/
void insertBefore( XMLElement *newChild, XMLElement *refChild );
/** removeChild removes the child from the XMLElement.
* The ownership gets dropped. You need to delete the
* child yourself.
*/
void removeChild( XMLElement *child );
/** parent() returns the parent of this XMLElement
* If there is no parent 0l gets returned
*/
XMLElement *parent() const { return m_parent; }
XMLElement *firstChild() const { return m_first; }
XMLElement *nextChild() const { return m_next; }
XMLElement *prevChild() const { return m_prev; }
XMLElement *lastChild() const { return m_last; }
void setTagName( const QString &tag ) { m_tag = tag; }
QString tagName() const { return m_tag; }
void setValue( const QString &val ) { m_value = val; }
QString value() const { return m_value; }
void setAttributes( const AttributeMap &attrs ) { m_attributes = attrs; }
AttributeMap attributes() const { return m_attributes; }
AttributeMap &attributes() { return m_attributes; }
QString attribute( const QString & ) const;
void setAttribute( const QString &attr, const QString &value );
void save( QTextStream &stream, uint indent = 0 );
XMLElement *namedItem( const QString &name );
XMLElement *clone() const;
static XMLElement *load( const QString &fileName );
private:
QString m_tag;
QString m_value;
AttributeMap m_attributes;
XMLElement *m_parent;
XMLElement *m_next;
XMLElement *m_prev;
XMLElement *m_first;
XMLElement *m_last;
XMLElement( const XMLElement &rhs );
XMLElement &operator=( const XMLElement &rhs );
+ class Private;
+ Private* d;
};
} // namespace Opie
#endif
diff --git a/libopie2/opiecore/xmltree.h b/libopie2/opiecore/xmltree.h
index 4a6b6d9..4b6bdfa 100644
--- a/libopie2/opiecore/xmltree.h
+++ b/libopie2/opiecore/xmltree.h
@@ -1,117 +1,119 @@
/* This file is part of the KDE project
Copyright (C) 2000,2001 Simon Hausmann <hausmann@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef __bookmarks_h__
#define __bookmarks_h__
#include <qstring.h>
#include <qmap.h>
#include <qtextstream.h>
namespace Opie
{
/**
* A small xml lib written by Simon Hausmann.
*/
class XMLElement
{
public:
typedef QMap<QString, QString> AttributeMap;
/**
* The constructor of XMLElement
*/
XMLElement();
~XMLElement();
/** appendChild appends a child to the XMLElement behind the last element.
* The ownership of the child get's transfered to the
* this XMLElement.
* If child is already the child of another parent
* it's get removed from the other parent first.
*/
void appendChild( XMLElement *child );
/** inserts newChild after refChild. If newChild is the child
* of another parent the child will get removed.
* The ownership of child gets transfered.
*
*/
void insertAfter( XMLElement *newChild, XMLElement *refChild );
/** same as insertAfter but the element get's inserted before refChild.
*
*/
void insertBefore( XMLElement *newChild, XMLElement *refChild );
/** removeChild removes the child from the XMLElement.
* The ownership gets dropped. You need to delete the
* child yourself.
*/
void removeChild( XMLElement *child );
/** parent() returns the parent of this XMLElement
* If there is no parent 0l gets returned
*/
XMLElement *parent() const { return m_parent; }
XMLElement *firstChild() const { return m_first; }
XMLElement *nextChild() const { return m_next; }
XMLElement *prevChild() const { return m_prev; }
XMLElement *lastChild() const { return m_last; }
void setTagName( const QString &tag ) { m_tag = tag; }
QString tagName() const { return m_tag; }
void setValue( const QString &val ) { m_value = val; }
QString value() const { return m_value; }
void setAttributes( const AttributeMap &attrs ) { m_attributes = attrs; }
AttributeMap attributes() const { return m_attributes; }
AttributeMap &attributes() { return m_attributes; }
QString attribute( const QString & ) const;
void setAttribute( const QString &attr, const QString &value );
void save( QTextStream &stream, uint indent = 0 );
XMLElement *namedItem( const QString &name );
XMLElement *clone() const;
static XMLElement *load( const QString &fileName );
private:
QString m_tag;
QString m_value;
AttributeMap m_attributes;
XMLElement *m_parent;
XMLElement *m_next;
XMLElement *m_prev;
XMLElement *m_first;
XMLElement *m_last;
XMLElement( const XMLElement &rhs );
XMLElement &operator=( const XMLElement &rhs );
+ class Private;
+ Private* d;
};
} // namespace Opie
#endif
diff --git a/libopie2/opiepim/core/otodoaccess.h b/libopie2/opiepim/core/otodoaccess.h
index 2bb87dc..a626731 100644
--- a/libopie2/opiepim/core/otodoaccess.h
+++ b/libopie2/opiepim/core/otodoaccess.h
@@ -1,87 +1,90 @@
#ifndef OPIE_TODO_ACCESS_H
#define OPIE_TODO_ACCESS_H
#include <qobject.h>
#include <qvaluelist.h>
#include "otodo.h"
#include "otodoaccessbackend.h"
#include "opimaccesstemplate.h"
/**
* OTodoAccess
* the class to get access to
* the todolist
*/
class OTodoAccess : public QObject, public OPimAccessTemplate<OTodo> {
Q_OBJECT
public:
enum SortOrder { Completed = 0,
Priority,
Description,
Deadline };
enum SortFilter{ Category =1,
OnlyOverDue= 2,
DoNotShowCompleted =4 };
/**
* if you use 0l
* the default resource will be
* picked up
*/
OTodoAccess( OTodoAccessBackend* = 0l, enum Access acc = Random );
~OTodoAccess();
/* our functions here */
/**
* include todos from start to end
* includeNoDates whether or not to include
* events with no dates
*/
List effectiveToDos( const QDate& start,
const QDate& end,
bool includeNoDates = true );
/**
* start
* end date taken from the currentDate()
*/
List effectiveToDos( const QDate& start,
bool includeNoDates = true );
/**
* return overdue OTodos
*/
List overDue();
/**
*
*/
List sorted( bool ascending, int sortOrder, int sortFilter, int cat );
/**
* merge a list of OTodos into
* the resource
*/
void mergeWith( const QValueList<OTodo>& );
/**
* delete all already completed items
*/
void removeAllCompleted();
signals:
/**
* if the OTodoAccess was changed
*/
- void signalChanged( const OTodoAccess* );
+ void changed( const OTodoAccess* );
+ void changed( const OTodoAccess*, int uid );
+ void added( const OTodoAccess*, int uid );
+ void removed( const OTodoAccess*, int uid );
private:
int m_cat;
OTodoAccessBackend* m_todoBackEnd;
class OTodoAccessPrivate;
OTodoAccessPrivate* d;
};
#endif