qtmobility/src/messaging/eventloggerengine_maemo.cpp
changeset 8 71781823f776
parent 4 90517678cc4f
child 11 06b8e2af4411
equal deleted inserted replaced
5:453da2cfceef 8:71781823f776
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the Qt Mobility Components.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
     1 #include "eventloggerengine_maemo_p.h"
    42 #include "eventloggerengine_maemo_p.h"
     2 #include "telepathyengine_maemo_p.h"
    43 #include "telepathyengine_maemo_p.h"
     3 #include <QDebug>
    44 #include <QDebug>
     4 
    45 
     5 QTM_BEGIN_NAMESPACE
    46 QTM_BEGIN_NAMESPACE
    12 {
    53 {
    13     return eventLoggerEngine();
    54     return eventLoggerEngine();
    14 }
    55 }
    15 
    56 
    16 
    57 
    17 EventLoggerEngine::EventLoggerEngine(QObject *parent)
    58 EventLoggerEngine::EventLoggerEngine(QObject *parent):QObject(parent)
    18 {
    59 {
    19   Q_UNUSED(parent);
       
    20   //    qDebug() << "EventLoggerEngine::EventLoggerEngine";
    60   //    qDebug() << "EventLoggerEngine::EventLoggerEngine";
    21     DBusError err=DBUS_ERROR_INIT;
    61     DBusError err=DBUS_ERROR_INIT;
       
    62     active = false;
    22     g_type_init();
    63     g_type_init();
    23     dbus = dbus_bus_get(DBUS_BUS_SESSION, &err); // Create dummy Dbus object and
    64     dbus = dbus_bus_get(DBUS_BUS_SESSION, &err); // Create dummy Dbus object and
    24     dbus_connection_setup_with_g_main (dbus, NULL); //add it to g_mainloop because eventlogger library expects that someone alse has added session bus to g_mainloop
    65     dbus_connection_setup_with_g_main (dbus, NULL); //add it to g_mainloop because eventlogger library expects that someone alse has added session bus to g_mainloop
    25     el=rtcom_el_new ();
    66     el=rtcom_el_new ();
    26     if(!RTCOM_IS_EL(el)) qDebug() << "EventLoggerEngine::EventLoggerEngine():Could't create RTComEl\n";
    67     if(!RTCOM_IS_EL(el)) qDebug() << "EventLoggerEngine::EventLoggerEngine():Could't create RTComEl\n";
    27 
    68 
       
    69     queryThread=0;
       
    70     //    queryThread.run();
       
    71     //    connect(queryThread, SIGNAL(messagesFound(const QMessageIdList &)),this, SLOT(messagesFound_(const QMessageIdList &)));
    28 
    72 
    29 
    73 
    30     g_signal_connect(G_OBJECT(el), "new-event", G_CALLBACK(new_event_cb),(void*)this);
    74     g_signal_connect(G_OBJECT(el), "new-event", G_CALLBACK(new_event_cb),(void*)this);
    31 }
    75 }
    32 
    76 
    33 void EventLoggerEngine::new_event_cb(RTComEl *el,int event_id,
    77 void EventLoggerEngine::new_event_cb(RTComEl *el,int event_id,
    34                                     const char *local_uid,const char *remote_uid,const char *remote_ebook_uid,
    78                                     const char *local_uid,const char *remote_uid,const char *remote_ebook_uid,
    35                                     const char *group_uid,const char *service,EventLoggerEngine *p)
    79                                     const char *group_uid,const char *service,EventLoggerEngine *p)
    36 {
    80 {
       
    81   Q_UNUSED(el);
    37   p->newEvent(event_id, local_uid,remote_uid ,remote_ebook_uid,group_uid,service);
    82   p->newEvent(event_id, local_uid,remote_uid ,remote_ebook_uid,group_uid,service);
    38 };
    83 };
    39 
    84 
    40 void EventLoggerEngine::newEvent(int event_id,
    85 void EventLoggerEngine::newEvent(int event_id,
    41                                 const char *local_uid,const char *remote_uid,const char *remote_ebook_uid,
    86                                 const char *local_uid,const char *remote_uid,const char *remote_ebook_uid,
   251                                                     QString body, QMessageDataComparator::MatchFlags matchFlags)
   296                                                     QString body, QMessageDataComparator::MatchFlags matchFlags)
   252 {
   297 {
   253     filterAndOrderMessages(filte, sortOrder, body, matchFlags);
   298     filterAndOrderMessages(filte, sortOrder, body, matchFlags);
   254 }
   299 }
   255 #endif
   300 #endif
       
   301 
       
   302 bool EventLoggerEngine::filterMessages(const QMessageFilter &filter,
       
   303                                                     const QMessageSortOrder& sortOrder,
       
   304                                                     QString body,
       
   305                                                     QMessageDataComparator::MatchFlags matchFlags)
       
   306 {
       
   307 
       
   308   //  qDebug() << "EventLoggerEngine::filterMessages";
       
   309   if (active) {
       
   310     qWarning() << "EventLoggerEngine::filterMessages::Service is currently busy";
       
   311     return false;
       
   312   }
       
   313 
       
   314 
       
   315   active = true;
       
   316   state = QMessageService::ActiveState;
       
   317   emit stateChanged(state);
       
   318 
       
   319   if(!queryThread) {
       
   320     queryThread=new QueryThread();
       
   321     connect(queryThread, SIGNAL(completed()), this, SLOT(reportMatchingIds()), Qt::QueuedConnection);
       
   322   };
       
   323   queryThread->setArgs(this, filter, body, matchFlags, sortOrder, 0,0);
       
   324   queryThread->start();
       
   325 
       
   326     //  return queryThread.queryMessages(filter,sortOrder,body,matchFlags);
       
   327     return true;
       
   328 }
       
   329 
       
   330 void EventLoggerEngine::messagesFound_(const QMessageIdList &ids)
       
   331 {
       
   332   //  qDebug() << "EventLoggerEngine::messagesFound";
       
   333   emit messagesFound(ids,true,false); // filtered but not sorted
       
   334 }
       
   335 
       
   336 
       
   337 void EventLoggerEngine::reportMatchingIds()
       
   338 {
       
   339   //  qDebug() << "EventLoggerEngine::messagesFound" << m_ids.count();
       
   340   emit messagesFound(m_ids,true,false);
       
   341   completed();
       
   342 }
       
   343 
       
   344 void EventLoggerEngine::completed()
       
   345 {
       
   346     active = false;
       
   347     state = QMessageService::FinishedState;
       
   348     emit stateChanged(state);
       
   349 }
       
   350 
   256 
   351 
   257 QMessageIdList EventLoggerEngine::filterAndOrderMessages(const QMessageFilter &filter,
   352 QMessageIdList EventLoggerEngine::filterAndOrderMessages(const QMessageFilter &filter,
   258                                                     const QMessageSortOrder& sortOrder,
   353                                                     const QMessageSortOrder& sortOrder,
   259                                                     QString body,
   354                                                     QString body,
   260                                                     QMessageDataComparator::MatchFlags matchFlags)
   355                                                     QMessageDataComparator::MatchFlags matchFlags)
   325         }
   420         }
   326 #endif
   421 #endif
   327     return idList;
   422     return idList;
   328 }
   423 }
   329 
   424 
       
   425 
       
   426 QueryThread::QueryThread(): QThread()
       
   427 {
       
   428 }
       
   429 
       
   430 void QueryThread::setArgs(EventLoggerEngine *parent, const QMessageFilter &filter, const QString &body, QMessageDataComparator::MatchFlags matchFlags, const QMessageSortOrder &sortOrder, uint limit, uint offset)
       
   431 {
       
   432   _parent=parent;
       
   433   _filter=filter;
       
   434   _body=body;
       
   435   _matchFlags=matchFlags;
       
   436   _sortOrder=sortOrder;
       
   437   _limit=limit;
       
   438   _offset=offset;
       
   439 }
       
   440 
       
   441 void QueryThread::run()
       
   442 {
       
   443   //  qDebug() << "QueryThread::run()";
       
   444   _parent->m_ids=EventLoggerEngine::instance()->filterAndOrderMessages(_filter,_sortOrder,_body,_matchFlags);
       
   445   //  qDebug() << "QueryThread::run() done" << _parent->m_ids.count();
       
   446   emit completed();
       
   447 }
       
   448 
       
   449 
       
   450 
       
   451 #include "moc_eventloggerengine_maemo_p.cpp"
       
   452 
   330 QTM_END_NAMESPACE
   453 QTM_END_NAMESPACE