From 0cb4111d34d9fe96731f48983e1ff2e67262db02 Mon Sep 17 00:00:00 2001 From: tille Date: Thu, 08 May 2003 13:55:09 +0000 Subject: search stuff and match, toRichText & toShortText in oevent --- (limited to 'libopie/pim') diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp index 96a5f65..a38b62b 100644 --- a/libopie/pim/ocontact.cpp +++ b/libopie/pim/ocontact.cpp @@ -947,15 +947,6 @@ void OContact::setChildren( const QString &str ) } /*! - Returns TRUE if the contact matches the regular expression \a regexp. - Otherwise returns FALSE. -*/ -bool OContact::match( const QString ®exp ) const -{ - return match(QRegExp(regexp)); -} - -/*! \overload Returns TRUE if the contact matches the regular expression \a regexp. Otherwise returns FALSE. diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h index 50f6176..0e6cbd2 100644 --- a/libopie/pim/ocontact.h +++ b/libopie/pim/ocontact.h @@ -111,8 +111,7 @@ public: // other void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } - bool match( const QString ®exp ) const; - bool match( const QRegExp ®exp ) const; + virtual bool match( const QRegExp ®exp ) const; // // custom // void setCustomField( const QString &key, const QString &v ) diff --git a/libopie/pim/ocontactaccess.cpp b/libopie/pim/ocontactaccess.cpp index 9c9338e..2e3ec1f 100644 --- a/libopie/pim/ocontactaccess.cpp +++ b/libopie/pim/ocontactaccess.cpp @@ -21,6 +21,10 @@ * ===================================================================== * History: * $Log$ + * Revision 1.8 2003/05/08 13:55:09 tille + * search stuff + * and match, toRichText & toShortText in oevent + * * Revision 1.7 2002/11/13 14:14:51 eilers * Added sorted for Contacts.. * @@ -73,7 +77,7 @@ OContactAccess::OContactAccess ( const QString appname, const QString , OContactAccessBackend* end, bool autosync ): OPimAccessTemplate( end ) { - /* take care of the backend. If there is no one defined, we + /* take care of the backend. If there is no one defined, we * will use the XML-Backend as default (until we have a cute SQL-Backend..). */ if( end == 0 ) { @@ -83,7 +87,7 @@ OContactAccess::OContactAccess ( const QString appname, const QString , // Set backend locally and in template m_backEnd = end; OPimAccessTemplate::setBackEnd (end); - + /* Connect signal of external db change to function */ QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this ); @@ -126,11 +130,6 @@ bool OContactAccess::save () return true; } -ORecordList OContactAccess::matchRegexp( const QRegExp &r ) const{ - QArray matchingContacts = m_backEnd -> matchRegexp( r ); - return ( ORecordList(matchingContacts, this) ); -} - const uint OContactAccess::querySettings() { return ( m_backEnd->querySettings() ); diff --git a/libopie/pim/ocontactaccess.h b/libopie/pim/ocontactaccess.h index d7ceaf2..e90db32 100644 --- a/libopie/pim/ocontactaccess.h +++ b/libopie/pim/ocontactaccess.h @@ -17,6 +17,10 @@ * ===================================================================== * History: * $Log$ + * Revision 1.8 2003/05/08 13:55:09 tille + * search stuff + * and match, toRichText & toShortText in oevent + * * Revision 1.7 2003/04/13 18:07:10 zecke * More API doc * QString -> const QString& @@ -110,8 +114,6 @@ class OContactAccess: public QObject, public OPimAccessTemplate }; - ORecordList matchRegexp( const QRegExp &r )const; - /** Return all Contacts in a sorted manner. * @param ascending true: Sorted in acending order. * @param sortOrder Currently not implemented. Just defined to stay compatible to otodoaccess diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/libopie/pim/odatebookaccessbackend_xml.cpp index a0ae7b7..ab2eea4 100644 --- a/libopie/pim/odatebookaccessbackend_xml.cpp +++ b/libopie/pim/odatebookaccessbackend_xml.cpp @@ -586,3 +586,21 @@ void ODateBookAccessBackend_XML::setField( OEvent& e, int id, const QString& val break; } } +QArray ODateBookAccessBackend_XML::matchRegexp( const QRegExp &r ) const +{ + QArray m_currentQuery( m_raw.count()+ m_rep.count() ); + uint arraycounter = 0; + QMap::ConstIterator it; + + for ( it = m_raw.begin(); it != m_raw.end(); ++it ) + if ( it.data().match( r ) ) + m_currentQuery[arraycounter++] = it.data().uid(); + for ( it = m_rep.begin(); it != m_rep.end(); ++it ) + if ( it.data().match( r ) ) + m_currentQuery[arraycounter++] = it.data().uid(); + + // Shrink to fit.. + m_currentQuery.resize(arraycounter); + + return m_currentQuery; +} diff --git a/libopie/pim/odatebookaccessbackend_xml.h b/libopie/pim/odatebookaccessbackend_xml.h index 7848f7c..a5cc0fc 100644 --- a/libopie/pim/odatebookaccessbackend_xml.h +++ b/libopie/pim/odatebookaccessbackend_xml.h @@ -22,6 +22,7 @@ public: bool save(); QArray allRecords()const; + QArray matchRegexp(const QRegExp &r) const; QArray queryByExample( const OEvent&, int, const QDateTime& d = QDateTime() ); OEvent find( int uid )const; void clear(); diff --git a/libopie/pim/oevent.cpp b/libopie/pim/oevent.cpp index 3ba8a52..28cf873 100644 --- a/libopie/pim/oevent.cpp +++ b/libopie/pim/oevent.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "orecur.h" #include "opimresolver.h" @@ -210,16 +211,46 @@ QString OEvent::timeZone()const { if (data->isAllDay ) return QString::fromLatin1("UTC"); return data->timezone; } -bool OEvent::match( const QRegExp& )const { - // FIXME +bool OEvent::match( const QRegExp& re )const { + if (data->description.contains( re ) ) + return true; + if ( data->note.contains( re ) ) + return true; + if ( data->location.contains( re ) ) + return true; + if ( data->start.toString().contains( re ) ) + return true; + if ( data->end.toString().contains( re ) ) + return true; return false; } QString OEvent::toRichText()const { - // FIXME - return "OEvent test"; + QString text; + if ( !description().isEmpty() ) { + text += "" + QObject::tr( "Description:") + "
"; + text += Qtopia::escapeString(description() ). + replace(QRegExp( "[\n]"), "
" ) + "
"; + } + if ( startDateTime().isValid() ) { + text += "" + QObject::tr( "Start:") + " "; + text += Qtopia::escapeString(startDateTime().toString() ). + replace(QRegExp( "[\n]"), "
" ) + "
"; + } + if ( endDateTime().isValid() ) { + text += "" + QObject::tr( "End:") + " "; + text += Qtopia::escapeString(endDateTime().toString() ). + replace(QRegExp( "[\n]"), "
" ) + "
"; + } + if ( !note().isEmpty() ) { + text += "" + QObject::tr( "Note:") + "
"; + text += note(); +// text += Qtopia::escapeString(note() ). +// replace(QRegExp( "[\n]"), "
" ) + "
"; + } + return text; } QString OEvent::toShortText()const { - return "OEvent shotText"; + return description(); } QString OEvent::type()const { return QString::fromLatin1("OEvent"); diff --git a/libopie/pim/oevent.h b/libopie/pim/oevent.h index 57d32d0..b696d81 100644 --- a/libopie/pim/oevent.h +++ b/libopie/pim/oevent.h @@ -113,7 +113,7 @@ public: QString timeZone()const; - bool match( const QRegExp& )const; + virtual bool match( const QRegExp& )const; /** For exception to recurrence here is a list of children... */ QArray children()const; diff --git a/libopie/pim/opimaccessbackend.h b/libopie/pim/opimaccessbackend.h index 01a0c86..f4bbe35 100644 --- a/libopie/pim/opimaccessbackend.h +++ b/libopie/pim/opimaccessbackend.h @@ -46,6 +46,12 @@ public: */ virtual QArray allRecords()const = 0; + /** + * return a List of records + * that match the regex + */ + virtual QArray matchRegexp(const QRegExp &r) const = 0; + /** * queryByExample for T with the given Settings * diff --git a/libopie/pim/opimaccesstemplate.h b/libopie/pim/opimaccesstemplate.h index 6a3a0db..8ff205c 100644 --- a/libopie/pim/opimaccesstemplate.h +++ b/libopie/pim/opimaccesstemplate.h @@ -69,6 +69,12 @@ public: * you can iterate over them */ virtual List allRecords()const; + + /** + * return a List of records + * that match the regex + */ + virtual List matchRegexp( const QRegExp &r ) const; /** * queryByExample. @@ -181,6 +187,12 @@ typename OPimAccessTemplate::List OPimAccessTemplate::allRecords()const { return lis; } template +typename OPimAccessTemplate::List OPimAccessTemplate::matchRegexp( const QRegExp &r )const { + QArray ints = m_backEnd->matchRegexp( r ); + List lis(ints, this ); + return lis; +} +template QArray OPimAccessTemplate::records()const { return m_backEnd->allRecords(); } diff --git a/libopie/pim/opimrecord.h b/libopie/pim/opimrecord.h index c7f9460..de2d9f4 100644 --- a/libopie/pim/opimrecord.h +++ b/libopie/pim/opimrecord.h @@ -73,6 +73,12 @@ public: virtual QString type()const = 0; /** + * matches the Records the regular expression? + */ + virtual bool match( const QString ®exp ) const {return match(QRegExp(regexp));}; + virtual bool match( const QRegExp ®exp ) const = 0; + + /** * converts the internal structure to a map */ virtual QMap toMap()const = 0; diff --git a/libopie/pim/otodo.h b/libopie/pim/otodo.h index a58d9aa..0e7c73f 100644 --- a/libopie/pim/otodo.h +++ b/libopie/pim/otodo.h @@ -258,7 +258,7 @@ public: bool isOverdue(); - bool match( const QRegExp &r )const; + virtual bool match( const QRegExp &r )const; bool operator<(const OTodo &toDoEvent )const; bool operator<=(const OTodo &toDoEvent )const; diff --git a/libopie/pim/otodoaccessvcal.cpp b/libopie/pim/otodoaccessvcal.cpp index 9bc16c6..3577e14 100644 --- a/libopie/pim/otodoaccessvcal.cpp +++ b/libopie/pim/otodoaccessvcal.cpp @@ -185,6 +185,10 @@ QArray OTodoAccessVCal::allRecords()const { } return ar; } +QArray OTodoAccessVCal::matchRegexp(const QRegExp &r)const { + QArray ar(0); + return ar; +} QArray OTodoAccessVCal::queryByExample( const OTodo&, int, const QDateTime& ) { QArray ar(0); return ar; diff --git a/libopie/pim/otodoaccessvcal.h b/libopie/pim/otodoaccessvcal.h index 489416b..2b17147 100644 --- a/libopie/pim/otodoaccessvcal.h +++ b/libopie/pim/otodoaccessvcal.h @@ -13,6 +13,7 @@ public: bool save(); QArray allRecords()const; + QArray matchRegexp(const QRegExp &r) const; QArray queryByExample( const OTodo& t, int sort, const QDateTime& d = QDateTime() ); QArray effectiveToDos( const QDate& start, const QDate& end, diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp index 285d2b8..69b7ab4 100644 --- a/libopie/pim/otodoaccessxml.cpp +++ b/libopie/pim/otodoaccessxml.cpp @@ -774,3 +774,19 @@ QBitArray OTodoAccessXML::sup() { return ar; } +QArray OTodoAccessXML::matchRegexp( const QRegExp &r ) const +{ + QArray m_currentQuery( m_events.count() ); + uint arraycounter = 0; + + QMap::ConstIterator it; + for (it = m_events.begin(); it != m_events.end(); ++it ) { + if ( it.data().match( r ) ) + m_currentQuery[arraycounter++] = it.data().uid(); + + } + // Shrink to fit.. + m_currentQuery.resize(arraycounter); + + return m_currentQuery; +} diff --git a/libopie/pim/otodoaccessxml.h b/libopie/pim/otodoaccessxml.h index cc4a16f..e4850a1 100644 --- a/libopie/pim/otodoaccessxml.h +++ b/libopie/pim/otodoaccessxml.h @@ -24,6 +24,7 @@ public: bool save(); QArray allRecords()const; + QArray matchRegexp(const QRegExp &r) const; QArray queryByExample( const OTodo&, int querysettings, const QDateTime& d = QDateTime() ); OTodo find( int uid )const; void clear(); -- cgit v0.9.0.2