author | mickeyl <mickeyl> | 2003-03-02 16:38:17 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-03-02 16:38:17 (UTC) |
commit | d0e64d0c7961de1c3ecb886ae76c6701f268d767 (patch) (side-by-side diff) | |
tree | 2ea00b7cd496bb0720b9730bbf993f2013a87d3e /noncore/net/wellenreiter/cornucopia | |
parent | a0ae7d2b8cfef3f643c4aa536bdf25d7da510142 (diff) | |
download | opie-d0e64d0c7961de1c3ecb886ae76c6701f268d767.zip opie-d0e64d0c7961de1c3ecb886ae76c6701f268d767.tar.gz opie-d0e64d0c7961de1c3ecb886ae76c6701f268d767.tar.bz2 |
first attempt to add session persistence
Diffstat (limited to 'noncore/net/wellenreiter/cornucopia') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/cornucopia/README | 127 | ||||
-rw-r--r-- | noncore/net/wellenreiter/cornucopia/olistview.cpp | 151 | ||||
-rw-r--r-- | noncore/net/wellenreiter/cornucopia/olistview.h | 87 |
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 @@ -125,2 +125,78 @@ void OListView::setColumnSeparator( const QPen& p ) +#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 *********************************************************************** @@ -247,3 +323,3 @@ void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, in { - _cg.setBrush(QColorGroup::Base, QBrush(backgroundColor(), *pm)); + _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); @@ -254,5 +330,5 @@ void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, in } - QListViewItem::paintCell(p, _cg, column, width, alignment); + QListViewItem::paintCell( p, _cg, column, width, alignment ); - //FIXME: Use styling here? + //FIXME: Use styling here! @@ -262 +338,70 @@ void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, in } + +#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 @@ -35,10 +35,13 @@ -#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. * @@ -114,2 +117,25 @@ + #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: @@ -118,5 +144,20 @@ 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 ****************************************************************** @@ -148,3 +189,3 @@ class OListViewItem: public QListViewItem QString = QString::null, QString = QString::null ); - + OListViewItem( QListViewItem * parent, QListViewItem * after, @@ -154,5 +195,5 @@ class OListViewItem: public QListViewItem QString = QString::null, QString = QString::null ); - + virtual ~OListViewItem(); - + const QColor& backgroundColor(); @@ -162,2 +203,16 @@ class OListViewItem: public QListViewItem + #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: @@ -167,2 +222,16 @@ class OListViewItem: public QListViewItem -#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 |