summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/cornucopia
Side-by-side diff
Diffstat (limited to 'noncore/net/wellenreiter/cornucopia') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/cornucopia/README127
-rw-r--r--noncore/net/wellenreiter/cornucopia/olistview.cpp151
-rw-r--r--noncore/net/wellenreiter/cornucopia/olistview.h87
3 files changed, 350 insertions, 15 deletions
diff --git a/noncore/net/wellenreiter/cornucopia/README b/noncore/net/wellenreiter/cornucopia/README
index 36a6954..486dc67 100644
--- a/noncore/net/wellenreiter/cornucopia/README
+++ b/noncore/net/wellenreiter/cornucopia/README
@@ -1,3 +1,124 @@
----------------------------------------------------------------
-Dies ist ein Testballon für opielibs1.2 - Codename: Cornucopia
----------------------------------------------------------------
+/********************************************************************
+/* This is an overview of the opielibs 1.2 project
+/********************************************************************/
+
+ Origin: opielibs is about creating classes to
+ * optimize Qt classes for the embedded environment
+ * provide sophisticated abstractions for developers
+ * provide complete documentation and working examples
+ * provide end users with a common look and feel
+ * reduce memory footprint through sharing code
+ * reduce possible bugs through reusing tested code
+
+--------------------------------------------------------
+1. General Overview
+--------------------------------------------------------
+
+Separation into the following libraries:
+ - libopiecore
+ - libopieui
+ - libopiepim
+ - libopienet
+
+1.1 Contents of libopiecore [ opiecore ]
+--------------------------------------------------------
+
+ - oprocctrl
+ - oprocess
+ - odevice
+ - odevicebutton
+
+ - oconfig
+ - oconfiggroupsaver
+ - ocompletionbase
+ - ocompletion
+ - ocomptreenodelist
+ - ocomptreenode
+ - ocompletionwrapper
+ - oglobal
+ - oglobalsettings
+ - osortableitem
+ - osortablevaluelist
+
+1.2 Contents of libopieui [ opieui ]
+--------------------------------------------------------
+
+ - oapplication
+
+ - ofiledialog
+ - colordialog
+ - oclickablelabel
+ - ocolorbutton
+ - colorpopupmenu
+ - otabinfo
+ - otabbar
+ - otabwidget
+ - ofontmenu
+ - ofontselector
+ - ofileview
+ - oticker
+
+ - olistview
+ - olistviewitem
+ - oversatileview
+ - oversatileviewitem
+ - ocompletionbox
+ - olineedit
+ - ocombobox
+ - ohistorycombo
+
+ - omessagebox
+ - odialogbase
+
+ - todayconfigwidget (rather into opiepim?)
+ - orecurrancewidget (rather into opiepim?)
+ - otimepicker (rather into opiepim?)
+
+1.3 Contents of libopiepim [ opiepim ]
+--------------------------------------------------------
+
+ - ocheckitem
+ - todoevent
+ - todoresource
+ - todayplugininterface
+ - todovcalresource
+
+1.4 Contents of libopiedb [ opiedb ]
+--------------------------------------------------------
+
+ - tododb
+ - xmltree
+
+1.5 Contents of libopienet [ opienet ]
+--------------------------------------------------------
+
+ <libmail stuff>
+ <libbend stuff>
+ <libftp stuff>
+
+--------------------------------------------------------
+2.0 Feature Description
+--------------------------------------------------------
+
+2.1 libopiecore
+
+...
+
+2.2 libopieui
+
+...
+
+2.2.x OListView, OListViewItem, OListViewFactory
+
+...
+
+2.3 libopiepim
+
+...
+
+2.4 libopiedb
+
+...
+
+2.5 libopienet
+
diff --git a/noncore/net/wellenreiter/cornucopia/olistview.cpp b/noncore/net/wellenreiter/cornucopia/olistview.cpp
index 8bc59de..f2d3730 100644
--- a/noncore/net/wellenreiter/cornucopia/olistview.cpp
+++ b/noncore/net/wellenreiter/cornucopia/olistview.cpp
@@ -102,48 +102,124 @@ void OListView::removeColumn( int index )
}
const QColor& OListView::alternateBackground() const
{
return m_alternateBackground;
}
void OListView::setAlternateBackground( const QColor &c )
{
m_alternateBackground = c;
repaint();
}
const QPen& OListView::columnSeparator() const
{
return m_columnSeparator;
}
void OListView::setColumnSeparator( const QPen& p )
{
m_columnSeparator = p;
repaint();
}
+#ifndef QT_NO_DATASTREAM
+void OListView::serializeTo( QDataStream& s ) const
+{
+ #warning Caution... the binary format is still under construction...
+ qDebug( "storing OListView..." );
+
+ // store number of columns and the labels
+ s << columns();
+ for ( int i = 0; i < columns(); ++i )
+ s << columnText( i );
+
+ // calculate the number of top-level items to serialize
+ int items = 0;
+ QListViewItem* item = firstChild();
+ while ( item )
+ {
+ item = item->nextSibling();
+ items++;
+ }
+
+ // store number of items and the items itself
+ s << items;
+ item = firstChild();
+ for ( int i = 0; i < items; ++i )
+ {
+ s << *static_cast<OListViewItem*>( item );
+ item = item->nextSibling();
+ }
+
+ qDebug( "OListview stored." );
+}
+
+void OListView::serializeFrom( QDataStream& s )
+{
+ #warning Caution... the binary format is still under construction...
+ qDebug( "loading OListView..." );
+
+ int cols;
+ s >> cols;
+ qDebug( "read number of columns = %d", cols );
+
+ while ( columns() < cols ) addColumn( QString::null );
+
+ for ( int i = 0; i < cols; ++i )
+ {
+ QString coltext;
+ s >> coltext;
+ qDebug( "read text '%s' for column %d", (const char*) coltext, i );
+ setColumnText( i, coltext );
+ }
+
+ int items;
+ s >> items;
+ qDebug( "read number of items = %d", items );
+
+ for ( int i = 0; i < items; ++i )
+ {
+ OListViewItem* item = new OListViewItem( this );
+ s >> *item;
+ }
+
+ qDebug( "OListView loaded." );
+
+}
+
+QDataStream& operator<<( QDataStream& s, const OListView& lv )
+{
+ lv.serializeTo( s );
+}
+
+QDataStream& operator>>( QDataStream& s, OListView& lv )
+{
+ lv.serializeFrom( s );
+}
+#endif // QT_NO_DATASTREAM
+
//****************************** OListViewItem ***********************************************************************
OListViewItem::OListViewItem(QListView *parent)
: QListViewItem(parent)
{
init();
}
OListViewItem::OListViewItem(QListViewItem *parent)
: QListViewItem(parent)
{
init();
}
OListViewItem::OListViewItem(QListView *parent, QListViewItem *after)
: QListViewItem(parent, after)
{
init();
}
OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after)
: QListViewItem(parent, after)
{
init();
@@ -224,39 +300,108 @@ bool OListViewItem::isAlternate()
/* if ( !item.inherits( "OListViewItem" ) item = 0; */
}
else
{
item = static_cast<OListViewItem *>(lv->firstChild());
}
while(item)
{
item->m_odd = previous = !previous;
item->m_known = true;
item = static_cast<OListViewItem *>(item->nextSibling());
/* if (!item.inherits( "OListViewItem" ) ) break; */
}
}
return m_odd;
}
void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
{
QColorGroup _cg = cg;
const QPixmap *pm = listView()->viewport()->backgroundPixmap();
if (pm && !pm->isNull())
{
- _cg.setBrush(QColorGroup::Base, QBrush(backgroundColor(), *pm));
+ _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) );
p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() );
}
else if ( isAlternate() )
{
_cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() );
}
- QListViewItem::paintCell(p, _cg, column, width, alignment);
+ QListViewItem::paintCell( p, _cg, column, width, alignment );
- //FIXME: Use styling here?
+ //FIXME: Use styling here!
const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator();
p->setPen( pen );
p->drawLine( width-1, 0, width-1, height() );
}
+
+#ifndef QT_NO_DATASTREAM
+void OListViewItem::serializeTo( QDataStream& s ) const
+{
+ #warning Caution... the binary format is still under construction...
+ qDebug( "storing OListViewItem..." );
+
+ // store item text
+ for ( int i = 0; i < listView()->columns(); ++i )
+ {
+ s << text( i );
+ }
+
+ // calculate the number of children to serialize
+ int items = 0;
+ QListViewItem* item = firstChild();
+ while ( item )
+ {
+ item = item->nextSibling();
+ items++;
+ }
+
+ // store number of items and the items itself
+ s << items;
+ item = firstChild();
+ for ( int i = 0; i < items; ++i )
+ {
+ s << *static_cast<OListViewItem*>( item );
+ item = item->nextSibling();
+ }
+
+ qDebug( "OListviewItem stored." );
+}
+void OListViewItem::serializeFrom( QDataStream& s )
+{
+ #warning Caution... the binary format is still under construction...
+ qDebug( "loading OListViewItem..." );
+
+ for ( int i = 0; i < listView()->columns(); ++i )
+ {
+ QString coltext;
+ s >> coltext;
+ qDebug( "read text '%s' for column %d", (const char*) coltext, i );
+ setText( i, coltext );
+ }
+
+ int items;
+ s >> items;
+ qDebug( "read number of items = %d", items );
+
+ for ( int i = 0; i < items; ++i )
+ {
+ OListViewItem* item = new OListViewItem( this );
+ s >> (*item);
+ }
+
+ qDebug( "OListViewItem loaded." );
+}
+
+QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi )
+{
+ lvi.serializeTo( s );
+}
+
+QDataStream& operator>>( QDataStream& s, OListViewItem& lvi )
+{
+ lvi.serializeFrom( s );
+}
+#endif // QT_NO_DATASTREAM
diff --git a/noncore/net/wellenreiter/cornucopia/olistview.h b/noncore/net/wellenreiter/cornucopia/olistview.h
index 4b9e4b0..9df5500 100644
--- a/noncore/net/wellenreiter/cornucopia/olistview.h
+++ b/noncore/net/wellenreiter/cornucopia/olistview.h
@@ -12,56 +12,59 @@
.="- .-=="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 OLISTVIEW_H
#define OLISTVIEW_H
-#include <qlistview.h>
#include <qcolor.h>
+#include <qlistview.h>
#include <qpen.h>
+#include <qdatastream.h>
+
+class OListViewFactory;
/**
- * A @ref QListView variant featuring visual enhancements
- * like an alternate background for odd rows and an autostretch
- * mode for the width of the widget.
+ * A @ref QListView variant featuring visual and functional enhancements
+ * like an alternate background for odd rows, an autostretch mode
+ * for the width of the widget ( >= Qt 3 only ) and persistence capabilities.
*
* @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
* @short OListView list/tree widget.
*/
class OListView: public QListView
{
public:
/**
* Constructor.
*
* The parameters @p parent and @p name are handled by
* @ref QListView, as usual.
*/
OListView ( QWidget *parent = 0, const char *name = 0 );
/**
* Destructor.
*/
virtual ~OListView();
/**
* Let the last column fit exactly all the available width.
*/
void setFullWidth( bool fullWidth );
@@ -91,78 +94,144 @@
* This only has an effect if the items are OListViewItems
*
* @param c the color to use for every other item. Set to an invalid
* color to disable alternate colors.
*/
void setAlternateBackground( const QColor &c );
/**
* sets the column separator pen.
*
* @param p the pen used to draw the column separator.
*/
void setColumnSeparator( const QPen &p );
/**
* @return the alternate background color
*/
const QColor& alternateBackground() const;
/**
* @return the column separator pen
*/
const QPen& columnSeparator() const;
+ #ifndef QT_NO_DATASTREAM
+ /**
+ * serialize this object to a @ref QDataStream
+ * @param s the stream used to serialize this object.
+ */
+ virtual void serializeTo( QDataStream& s ) const;
+
+ /**
+ * serialize this object from a @ref QDataStream
+ * @param s the stream used to serialize this object.
+ */
+ virtual void serializeFrom( QDataStream& s );
+ #endif
+
+ /**
+ * returns a factory for OListView classes
+ * creates one on the fly if it doesn't exist
+ * @return the XML Factory
+ */
+ #ifndef QT_NO_XML
+ //OListViewFactory* Factory();
+ #endif
+
private:
QColor m_alternateBackground;
bool m_fullWidth;
QPen m_columnSeparator;
-
+ #ifndef QT_NO_XML
+ //OListViewFactory* m_Factory;
+ #endif
};
+#ifndef QT_NO_DATASTREAM
+/**
+ * \relates QListView
+ * Writes a listview to the stream and returns a reference to the stream.
+ */
+QDataStream& operator<<( QDataStream& s, const OListView& lv );
+/**
+ * \relates QListView
+ * Reads a listview from the stream and returns a reference to the stream.
+ */
+QDataStream& operator>>( QDataStream& s, OListView& lv );
+#endif // QT_NO_DATASTREAM
+
//****************************** OListViewItem ******************************************************************
class OListViewItem: public QListViewItem
{
public:
OListViewItem( QListView * parent );
OListViewItem( QListViewItem * parent );
OListViewItem( QListView * parent, QListViewItem * after );
OListViewItem( QListViewItem * parent, QListViewItem * after );
OListViewItem( QListView * parent,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
OListViewItem( QListViewItem * parent,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
OListViewItem( QListView * parent, QListViewItem * after,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
-
+
OListViewItem( QListViewItem * parent, QListViewItem * after,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
-
+
virtual ~OListViewItem();
-
+
const QColor& backgroundColor();
bool isAlternate();
void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment );
void init();
+ #ifndef QT_NO_DATASTREAM
+ /**
+ * serialize this object to or from a @ref QDataStream
+ * @param s the stream used to serialize this object.
+ */
+ virtual void serializeTo( QDataStream& s ) const;
+
+ /**
+ * serialize this object to or from a @ref QDataStream
+ * @param s the stream used to serialize this object.
+ */
+ virtual void serializeFrom( QDataStream& s );
+ #endif
+
private:
bool m_known;
bool m_odd;
};
-#endif
+#ifndef QT_NO_DATASTREAM
+/**
+ * \relates QListViewItem
+ * Writes a listview item and all subitems recursively to the stream
+ * and returns a reference to the stream.
+ */
+QDataStream& operator<<( QDataStream &s, const OListViewItem& lvi );
+/**
+ * \relates QListViewItem
+ * Reads a listview item from the stream and returns a reference to the stream.
+ */
+QDataStream& operator>>( QDataStream &s, OListViewItem& lvi );
+#endif // QT_NO_DATASTREAM
+
+#endif // OLISTVIEW_H