summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/private/opimsortvector.h
Side-by-side diff
Diffstat (limited to 'libopie2/opiepim/private/opimsortvector.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/private/opimsortvector.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/libopie2/opiepim/private/opimsortvector.h b/libopie2/opiepim/private/opimsortvector.h
index 6c21339..11a40ac 100644
--- a/libopie2/opiepim/private/opimsortvector.h
+++ b/libopie2/opiepim/private/opimsortvector.h
@@ -44,24 +44,27 @@ struct OPimSortVectorContainer {
template<class T>
class OPimSortVector : public QVector<OPimSortVectorContainer<T> > {
typedef OPimSortVectorContainer<T> VectorItem;
public:
OPimSortVector( uint size, bool asc, int sort );
int compareItems( QCollection::Item d1, QCollection::Item d2 );
bool insert( uint, const T& t );
UID uidAt( uint i )const;
protected:
int testString( const QString&, const QString& )const;
int testDate( const QDate&, const QDate& )const;
+ int testTime( const QTime&, const QTime& )const;
+ int testDateTime( const QDateTime& left,
+ const QDateTime& right )const;
protected:
bool sortAscending()const;
int sortOrder()const;
private:
bool m_ascending : 1;
int m_sort;
virtual int compareItems( const T& item1, const T& item2 ) = 0;
};
template<class T>
OPimSortVector<T>::OPimSortVector( uint size, bool asc, int sort )
@@ -111,28 +114,59 @@ bool OPimSortVector<T>::insert( uint i, const T& record ) {
template<class T>
UID OPimSortVector<T>::uidAt( uint index )const {
return this->at( index )->item.uid();
}
template<class T>
inline int OPimSortVector<T>::testString( const QString& left,
const QString& right )const {
return QString::compare( left, right );
}
+
template<class T>
inline int OPimSortVector<T>::testDate( const QDate& left,
const QDate& right )const {
int ret = 0;
if ( !left .isValid() ) ret++;
if ( !right.isValid() ) ret--;
if ( left.isValid() && right.isValid() )
ret += left < right ? -1 : 1;
return ret;
}
+
+template<class T>
+inline int OPimSortVector<T>::testTime( const QTime& left,
+ const QTime& right )const {
+ int ret = 0;
+ if ( !left .isValid() ) ret++;
+ if ( !right.isValid() ) ret--;
+
+ if ( left.isValid() && right.isValid() ){
+ ret += left < right ? -1 : 1;
+ }
+
+ return ret;
+}
+
+template<class T>
+inline int OPimSortVector<T>::testDateTime( const QDateTime& left,
+ const QDateTime& right )const {
+ int ret = 0;
+ if ( !left .isValid() ) ret++;
+ if ( !right.isValid() ) ret--;
+
+ if ( left.isValid() && right.isValid() ){
+ ret += left < right ? -1 : 1;
+ }
+
+ return ret;
+
+}
+
}
}
#endif