summaryrefslogtreecommitdiffstats
path: root/src/listviewcomparison.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/listviewcomparison.h')
-rw-r--r--src/listviewcomparison.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/listviewcomparison.h b/src/listviewcomparison.h
new file mode 100644
index 0000000..4c0ed43
--- /dev/null
+++ b/src/listviewcomparison.h
@@ -0,0 +1,116 @@
+/***************************************************************************
+ copyright : (C) 2007 by Robby Stephenson
+ email : robby@periapsis.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of version 2 of the GNU General Public License as *
+ * published by the Free Software Foundation; *
+ * *
+ ***************************************************************************/
+
+#ifndef TELLICO_LISTVIEWCOMPARISON_H
+#define TELLICO_LISTVIEWCOMPARISON_H
+
+#include "datavectors.h"
+
+#include <qregexp.h>
+
+class QStringList;
+class QIconViewItem;
+
+namespace Tellico {
+ namespace GUI {
+ class ListViewItem;
+ }
+
+class ListViewComparison {
+public:
+ ListViewComparison(Data::ConstFieldPtr field);
+ virtual ~ListViewComparison() {}
+
+ const QString& fieldName() const { return m_fieldName; }
+
+ virtual int compare(int col, const GUI::ListViewItem* item1, const GUI::ListViewItem* item2, bool asc);
+ virtual int compare(const QIconViewItem* item1, const QIconViewItem* item2);
+
+ static ListViewComparison* create(Data::FieldPtr field);
+ static ListViewComparison* create(Data::ConstFieldPtr field);
+
+protected:
+ virtual int compare(const QString& str1, const QString& str2) = 0;
+
+private:
+ QString m_fieldName;
+};
+
+class StringComparison : public ListViewComparison {
+public:
+ StringComparison(Data::ConstFieldPtr field);
+
+protected:
+ virtual int compare(const QString& str1, const QString& str2);
+};
+
+class TitleComparison : public ListViewComparison {
+public:
+ TitleComparison(Data::ConstFieldPtr field);
+
+protected:
+ virtual int compare(const QString& str1, const QString& str2);
+};
+
+class NumberComparison : public ListViewComparison {
+public:
+ NumberComparison(Data::ConstFieldPtr field);
+
+protected:
+ virtual int compare(const QString& str1, const QString& str2);
+};
+
+class LCCComparison : public StringComparison {
+public:
+ LCCComparison(Data::ConstFieldPtr field);
+
+protected:
+ virtual int compare(const QString& str1, const QString& str2);
+
+private:
+ int compareLCC(const QStringList& cap1, const QStringList& cap2) const;
+ QRegExp m_regexp;
+};
+
+class PixmapComparison : public ListViewComparison {
+public:
+ PixmapComparison(Data::ConstFieldPtr field);
+
+ virtual int compare(int col, const GUI::ListViewItem* item1, const GUI::ListViewItem* item2, bool asc);
+ virtual int compare(const QIconViewItem* item1, const QIconViewItem* item2);
+
+protected:
+ virtual int compare(const QString&, const QString&) { return 0; }
+};
+
+class DependentComparison : public StringComparison {
+public:
+ DependentComparison(Data::ConstFieldPtr field);
+
+ virtual int compare(int col, const GUI::ListViewItem* item1, const GUI::ListViewItem* item2, bool asc);
+ virtual int compare(const QIconViewItem* item1, const QIconViewItem* item2);
+
+private:
+ QPtrList<ListViewComparison> m_comparisons;
+};
+
+class ISODateComparison : public ListViewComparison {
+public:
+ ISODateComparison(Data::ConstFieldPtr field);
+
+protected:
+ virtual int compare(const QString& str1, const QString& str2);
+};
+
+}
+#endif