From: Arun Ravindran <[email protected]>

---
 src/dialogitemmodel.cpp |   44 +++++++++++++++++++++++++++++++++++---------
 src/dialogitemmodel.h   |    2 ++
 2 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/src/dialogitemmodel.cpp b/src/dialogitemmodel.cpp
index dbdd1a2..58b1f91 100644
--- a/src/dialogitemmodel.cpp
+++ b/src/dialogitemmodel.cpp
@@ -9,26 +9,52 @@
  *
  */
 
-
+#include<QtGlobal>
 #include "dialogitemmodel.h"
 
 DialogItemModel::DialogItemModel(Backend *backend, const QString &phone) :
     mBackend(backend),
     mPhone(phone)
 {
+       QTimer::singleShot(25, this, SLOT(InitializeRows()));
+    connect(mBackend, SIGNAL(smsAdded(QList<SmsData>)), this, 
SLOT(sms_added(QList<SmsData>)));
+    connect(mBackend, SIGNAL(smsModified(QList<SmsData>)), this, 
SLOT(sms_modified(QList<SmsData>)));
+    connect(mBackend, SIGNAL(smsRemoved(QList<unsigned int>)), this, 
SLOT(sms_removed(QList<unsigned int>)));
+}
+
+bool DialogItemModel::SafeFindPhoneNumber(QString& in, QString& out)
+{
+    bool ret = false;
+    int length = qMin(out.length(),in.length())-1;
+
+    QStringRef sig1 = in.rightRef(length);//Last 9 digits are important
+    QStringRef sig2 = out.rightRef(length);//Last 9 digits are important
+
+    ret = in.contains(out);
+    if(!ret)
+        ret = out.contains(in);
+    else if(!ret)
+        ret = sig1.toString().contains(sig2.toString());
+
+    return ret;
+}
+
+void DialogItemModel::InitializeRows()
+{
     SmsData dat;
-    //beginInsertRows(QModelIndex(), 0, mModel.size()-1);
-    foreach (dat, mBackend->getSmsHistory()) {
-        if (mPhone == dat.sender && !dat.draft) {
+    QList<SmsData>dats = mBackend->getSmsHistory();
+    if(dats.size()) {
+    beginInsertRows(QModelIndex(), 0, dats.size()-1);
+    foreach (dat, dats) {
+        if (SafeFindPhoneNumber(mPhone,dat.sender) && !dat.draft) {
             mModel.append(dat);
         }
     }
     qSort(mModel);
-    //endInsertRows();
-    //emit dataUpdated();
-    connect(mBackend, SIGNAL(smsAdded(QList<SmsData>)), this, 
SLOT(sms_added(QList<SmsData>)));
-    connect(mBackend, SIGNAL(smsModified(QList<SmsData>)), this, 
SLOT(sms_modified(QList<SmsData>)));
-    connect(mBackend, SIGNAL(smsRemoved(QList<unsigned int>)), this, 
SLOT(sms_removed(QList<unsigned int>)));
+    endInsertRows();
+    emit dataUpdated();
+    }
+
 }
 
 DialogItemModel::~DialogItemModel()
diff --git a/src/dialogitemmodel.h b/src/dialogitemmodel.h
index b4a389f..e9ef181 100644
--- a/src/dialogitemmodel.h
+++ b/src/dialogitemmodel.h
@@ -25,10 +25,12 @@ public:
     ~DialogItemModel();
     int rowCount(const QModelIndex &parent = QModelIndex()) const;
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+    bool SafeFindPhoneNumber(QString& in, QString& out);
 public slots:
     void sms_added(QList<SmsData>);
     void sms_modified(QList<SmsData>);
     void sms_removed(QList<unsigned int>);
+    void InitializeRows();
 signals:
     void dataUpdated();
 private:
-- 
1.7.0.4

_______________________________________________
MeeGo-dev mailing list
[email protected]
http://lists.meego.com/listinfo/meego-dev

Reply via email to