summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdriano Melo <adriano.melo@openbossa.org>2012-04-26 15:42:51 -0300
committerLuis Gabriel Lima <luis.gabriel@openbossa.org>2012-04-27 22:24:38 +0200
commitd1dc0e8bbb60adf03aaffe9aa4018937a6503bfa (patch)
treec1b4a9ff3fb0dad76ce477df8de9ce1e9575c3bd
parent338a7f33e631376887a9f131eed945a6faf3b330 (diff)
UiTextFileModel separator now is a regular expression
- Separator property changed from QString to QRegExp - CaseSensitivity property added - QML UiTextFileModel example modified to use a regular expression Change-Id: I36e288ea87955c219bac1872ffde2fca17eb65fa Reviewed-by: Daker Fernandes Pinheiro <daker.pinheiro@openbossa.org>
-rw-r--r--examples/models/quicktextfilemodel/main.qml9
-rw-r--r--examples/models/quicktextfilemodel/qtmodules.txt9
-rw-r--r--src/models/uitextfilemodel.cpp35
-rw-r--r--src/models/uitextfilemodel.h6
-rw-r--r--src/models/uitextfilemodel_p.h5
-rw-r--r--tests/auto/models/uitextfilemodel/tst_uitextfilemodel.cpp18
6 files changed, 75 insertions, 7 deletions
diff --git a/examples/models/quicktextfilemodel/main.qml b/examples/models/quicktextfilemodel/main.qml
index d93d360..cd272c5 100644
--- a/examples/models/quicktextfilemodel/main.qml
+++ b/examples/models/quicktextfilemodel/main.qml
@@ -50,12 +50,19 @@ Rectangle {
TextFileModel {
id: fileModel
- source: "../../shared/countries.txt"
+ separator: "[\n, ]"
+ source: "qtmodules.txt"
}
ListView {
anchors.fill: parent
model: fileModel
+ header: Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ text: "Qt5 Modules"
+ font.pixelSize: 25
+ }
+
delegate: Text {
text: display
height: 20
diff --git a/examples/models/quicktextfilemodel/qtmodules.txt b/examples/models/quicktextfilemodel/qtmodules.txt
new file mode 100644
index 0000000..e045651
--- /dev/null
+++ b/examples/models/quicktextfilemodel/qtmodules.txt
@@ -0,0 +1,9 @@
+QtBluetooth, QtContacts, QtCore, QtGui,
+QtLocation, QtMultimedia, QtNetwork, QtOpenGL,
+QtOpenVG, QtOrganizer, QtPrintSupport, QtPublishSubscribe,
+QtQml, QtQuick, QtScript, QtScriptTools,
+QtSensors, QtServiceFramework, QtSql, QtSvg,
+QtSystemInfo, QtVersit, QtWebKit, QtWidgets,
+QtXml, QtXmlPatterns, Qt3D, Phonon,
+QtDesigner, QtHelp, QtTest, QtUiTools,
+QAxContainer, QAxServer, QtDBus
diff --git a/src/models/uitextfilemodel.cpp b/src/models/uitextfilemodel.cpp
index 8333199..9baf945 100644
--- a/src/models/uitextfilemodel.cpp
+++ b/src/models/uitextfilemodel.cpp
@@ -48,6 +48,7 @@
#include "QtCore/qscopedpointer.h"
#include "QtCore/qstring.h"
#include "QtCore/qstringlist.h"
+#include "QtCore/qregexp.h"
QT_BEGIN_NAMESPACE_UIHELPERS
@@ -77,7 +78,12 @@ void UiTextFileModelPrivate::reload()
if (text.isEmpty())
return;
- QStringList list = text.split(separator);
+ if (!separator.isValid()) {
+ qWarning("UiTextFileModel: separator is not valid");
+ return;
+ }
+
+ QStringList list = text.split(separator, QString::SkipEmptyParts);
foreach (const QString & textItem, list) {
UiStandardItem *item = new UiStandardItem(textItem);
q->appendRow(item);
@@ -115,17 +121,17 @@ void UiTextFileModel::setSource(const QString &source)
QString UiTextFileModel::separator() const
{
Q_D(const UiTextFileModel);
- return d->separator;
+ return d->separator.pattern();
}
void UiTextFileModel::setSeparator(const QString &separator)
{
Q_D(UiTextFileModel);
- if (d->separator == separator)
+ if (d->separator.pattern() == separator)
return;
- d->separator = separator;
+ d->separator.setPattern(separator);
if (!d->source.isEmpty())
d->reload();
@@ -133,6 +139,27 @@ void UiTextFileModel::setSeparator(const QString &separator)
emit separatorChanged();
}
+Qt::CaseSensitivity UiTextFileModel::caseSensitivity() const
+{
+ Q_D(const UiTextFileModel);
+ return d->separator.caseSensitivity();
+}
+
+void UiTextFileModel::setCaseSensitivity(const Qt::CaseSensitivity caseSensitivity)
+{
+ Q_D(UiTextFileModel);
+
+ if (d->separator.caseSensitivity() != caseSensitivity)
+ return;
+
+ d->separator.setCaseSensitivity(caseSensitivity);
+
+ if (!d->source.isEmpty())
+ d->reload();
+
+ emit caseSensitivityChanged();
+}
+
QT_END_NAMESPACE_UIHELPERS
#endif // QT_NO_TEXTFILEMODEL
diff --git a/src/models/uitextfilemodel.h b/src/models/uitextfilemodel.h
index 4b8e999..62e1df5 100644
--- a/src/models/uitextfilemodel.h
+++ b/src/models/uitextfilemodel.h
@@ -47,6 +47,7 @@
#include "QtCore/qscopedpointer.h"
#include "QtCore/qurl.h"
#include "QtCore/qstring.h"
+#include "QtCore/qregexp.h"
QT_BEGIN_HEADER
@@ -61,6 +62,8 @@ class UIHELPERS_EXPORT UiTextFileModel : public UiStandardItemModel
Q_OBJECT
Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)
Q_PROPERTY(QString separator READ separator WRITE setSeparator NOTIFY separatorChanged)
+ Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity
+ WRITE setCaseSensitivity NOTIFY caseSensitivityChanged)
public:
explicit UiTextFileModel(QObject *parent = 0);
@@ -70,10 +73,13 @@ public:
void setSource(const QString &source);
QString separator() const;
void setSeparator(const QString &separator);
+ Qt::CaseSensitivity caseSensitivity() const;
+ void setCaseSensitivity(const Qt::CaseSensitivity caseSensitivity);
Q_SIGNALS:
void sourceChanged();
void separatorChanged();
+ void caseSensitivityChanged();
private:
Q_DISABLE_COPY(UiTextFileModel)
diff --git a/src/models/uitextfilemodel_p.h b/src/models/uitextfilemodel_p.h
index faf2380..3f6fd64 100644
--- a/src/models/uitextfilemodel_p.h
+++ b/src/models/uitextfilemodel_p.h
@@ -54,8 +54,9 @@
////
//
-#include <QScopedPointer>
#include "uitextfilemodel.h"
+#include "QtCore/qregexp.h"
+#include "QtCore/qscopedpointer.h"
QT_BEGIN_NAMESPACE_UIHELPERS
@@ -70,7 +71,7 @@ public:
void reload();
QString source;
- QString separator;
+ QRegExp separator;
UiTextFileModel *q_ptr;
};
diff --git a/tests/auto/models/uitextfilemodel/tst_uitextfilemodel.cpp b/tests/auto/models/uitextfilemodel/tst_uitextfilemodel.cpp
index 4bd3e46..482f05e 100644
--- a/tests/auto/models/uitextfilemodel/tst_uitextfilemodel.cpp
+++ b/tests/auto/models/uitextfilemodel/tst_uitextfilemodel.cpp
@@ -63,6 +63,8 @@ private slots:
void carriageReturnLineFeedSeparatorCount();
void specialCharacterSeparatorCount();
void withoutSeparatorCount();
+ void regexpSimpleCount();
+ void regexpLineBeginnigCount();
};
void tst_UiTextFileModel::init()
@@ -130,5 +132,21 @@ void tst_UiTextFileModel::withoutSeparatorCount()
QCOMPARE(model.rowCount(), rowsCount + 1);
}
+void tst_UiTextFileModel::regexpSimpleCount()
+{
+ UiHelpers::UiTextFileModel model;
+ model.setSeparator("[\n\r]");
+ model.setSource(file.fileName());
+ QCOMPARE(model.rowCount(), rowsCount + 1);
+}
+
+void tst_UiTextFileModel::regexpLineBeginnigCount()
+{
+ UiHelpers::UiTextFileModel model;
+ model.setSeparator("(Come)");
+ model.setSource(file.fileName());
+ QCOMPARE(model.rowCount(), rowsCount + 1);
+}
+
QTEST_MAIN(tst_UiTextFileModel)
#include "tst_uitextfilemodel.moc"