contentstorage/caclient/src/canotifier.cpp
changeset 87 9d806967057c
parent 85 7feec50967db
child 93 82b66994846c
equal deleted inserted replaced
86:e492551a0d54 87:9d806967057c
    90 
    90 
    91 /*!
    91 /*!
    92  Constructor.
    92  Constructor.
    93  \param entryPrivate pointer to private implementation.
    93  \param entryPrivate pointer to private implementation.
    94  */
    94  */
    95 CaNotifier::CaNotifier(CaNotifierPrivate * const notifierPrivate) :
    95 CaNotifier::CaNotifier(CaNotifierPrivate *const notifierPrivate) :
    96     QObject(0), m_d(notifierPrivate)
    96     QObject(0), m_d(notifierPrivate)
    97 {
    97 {
    98     m_d->m_q = this;
    98     m_d->m_q = this;
    99     m_d->makeConnect();
    99     m_d->makeConnect();
   100 }
   100 }
   116 void CaNotifier::connectNotify(const char *signal)
   116 void CaNotifier::connectNotify(const char *signal)
   117 {
   117 {
   118     qDebug("CaNotifier::connectNotify");
   118     qDebug("CaNotifier::connectNotify");
   119     qDebug("\tsignal: %s", signal);
   119     qDebug("\tsignal: %s", signal);
   120     if (QLatin1String(signal)
   120     if (QLatin1String(signal)
   121         == SIGNAL(entryChanged(int,ChangeType))) {
   121             == SIGNAL(entryChanged(int,ChangeType))) {
   122          // signal is entryChanged(int, ChangeType)
   122         // signal is entryChanged(int, ChangeType)
   123         if (receivers(SIGNAL(entryChanged(int,ChangeType))) == 1) {
   123         if (receivers(SIGNAL(entryChanged(int,ChangeType))) == 1) {
   124             m_d->registerNotifier(
   124             m_d->registerNotifier(
   125                 CaNotifierPrivate::EntryChangedWithIdNotifierType);
   125                 CaNotifierPrivate::EntryChangedWithIdNotifierType);
   126         }
   126         }
   127      }
   127     } else if (QLatin1String(signal)
   128     else if (QLatin1String(signal)
   128                == SIGNAL(entryChanged(CaEntry,ChangeType))) {
   129         == SIGNAL(entryChanged(CaEntry,ChangeType))) {
       
   130         // signal is entryChanged(const CaEntry &, ChangeType)
   129         // signal is entryChanged(const CaEntry &, ChangeType)
   131         if (receivers(SIGNAL(entryChanged(const CaEntry &,ChangeType))) == 1) {
   130         if (receivers(SIGNAL(entryChanged(const CaEntry &,ChangeType))) == 1) {
   132             m_d->registerNotifier(
   131             m_d->registerNotifier(
   133                 CaNotifierPrivate::EntryChangedWithEntryNotifierType);
   132                 CaNotifierPrivate::EntryChangedWithEntryNotifierType);
   134         }
   133         }
   135     }
   134     } else if (QLatin1String(signal)
   136     else if (QLatin1String(signal)
   135                == SIGNAL(entryTouched(int))) {
   137         == SIGNAL(entryTouched(int))) {
       
   138         // signal is entryTouched(int)
   136         // signal is entryTouched(int)
   139         if (receivers(SIGNAL(entryTouched(int)))) {
   137         if (receivers(SIGNAL(entryTouched(int)))) {
   140             m_d->registerNotifier(
   138             m_d->registerNotifier(
   141                 CaNotifierPrivate::EntryTouchedNotifierType);
   139                 CaNotifierPrivate::EntryTouchedNotifierType);
   142         }
   140         }
   143     }
   141     } else if (QLatin1String(signal)
   144     else if (QLatin1String(signal)
   142                == SIGNAL(groupContentChanged(int))) {
   145         == SIGNAL(groupContentChanged(int))) {
       
   146         // signal is groupContentChanged(int)
   143         // signal is groupContentChanged(int)
   147         if (receivers(SIGNAL(groupContentChanged(int)))) {
   144         if (receivers(SIGNAL(groupContentChanged(int)))) {
   148             m_d->registerNotifier(
   145             m_d->registerNotifier(
   149                 CaNotifierPrivate::GroupContentChangedNotifierType);
   146                 CaNotifierPrivate::GroupContentChangedNotifierType);
   150         }
   147         }
   159 void CaNotifier::disconnectNotify(const char *signal)
   156 void CaNotifier::disconnectNotify(const char *signal)
   160 {
   157 {
   161     qDebug("CaNotifier::disconnectNotify");
   158     qDebug("CaNotifier::disconnectNotify");
   162     qDebug("\tsignal: %s", signal);
   159     qDebug("\tsignal: %s", signal);
   163     if (QLatin1String(signal)
   160     if (QLatin1String(signal)
   164         == SIGNAL(entryChanged(int,ChangeType))) {
   161             == SIGNAL(entryChanged(int,ChangeType))) {
   165          // signal is entryChanged(int, ChangeType)
   162         // signal is entryChanged(int, ChangeType)
   166         if(receivers(SIGNAL(entryChanged(int,ChangeType)))==0) {
   163         if (receivers(SIGNAL(entryChanged(int,ChangeType)))==0) {
   167             m_d->unregisterNotifier(
   164             m_d->unregisterNotifier(
   168                 CaNotifierPrivate::EntryChangedWithIdNotifierType);
   165                 CaNotifierPrivate::EntryChangedWithIdNotifierType);
   169         }
   166         }
   170      }
   167     } else if (QLatin1String(signal)
   171     else if (QLatin1String(signal)
   168                == SIGNAL(entryChanged(CaEntry,ChangeType))) {
   172         == SIGNAL(entryChanged(CaEntry,ChangeType))) {
       
   173         // signal is entryChanged(const CaEntry &, ChangeType)
   169         // signal is entryChanged(const CaEntry &, ChangeType)
   174         if (receivers(SIGNAL(entryChanged(const CaEntry &,ChangeType)))==0) {
   170         if (receivers(SIGNAL(entryChanged(const CaEntry &,ChangeType)))==0) {
   175             m_d->unregisterNotifier(
   171             m_d->unregisterNotifier(
   176                 CaNotifierPrivate::EntryChangedWithEntryNotifierType);
   172                 CaNotifierPrivate::EntryChangedWithEntryNotifierType);
   177         }
   173         }
   178     }
   174     } else if (QLatin1String(signal)
   179     else if (QLatin1String(signal)
   175                == SIGNAL(entryTouched(int))) {
   180         == SIGNAL(entryTouched(int))) {
       
   181         // signal is entryTouched(int)
   176         // signal is entryTouched(int)
   182         if (receivers(SIGNAL(entryTouched(int))) == 0) {
   177         if (receivers(SIGNAL(entryTouched(int))) == 0) {
   183             m_d->unregisterNotifier(
   178             m_d->unregisterNotifier(
   184                 CaNotifierPrivate::EntryTouchedNotifierType);
   179                 CaNotifierPrivate::EntryTouchedNotifierType);
   185         }
   180         }
   186     }
   181     } else if (QLatin1String(signal)
   187     else if (QLatin1String(signal)
   182                == SIGNAL(groupContentChanged(int))) {
   188         == SIGNAL(groupContentChanged(int))) {
       
   189         // signal is groupContentChanged(int)
   183         // signal is groupContentChanged(int)
   190         if (receivers(SIGNAL(groupContentChanged(int))) == 0) {
   184         if (receivers(SIGNAL(groupContentChanged(int))) == 0) {
   191             m_d->unregisterNotifier(
   185             m_d->unregisterNotifier(
   192                 CaNotifierPrivate::GroupContentChangedNotifierType);
   186                 CaNotifierPrivate::GroupContentChangedNotifierType);
   193         }
   187         }
   202     const CaNotifierFilter &notifierFilter) :
   196     const CaNotifierFilter &notifierFilter) :
   203     m_q(NULL),
   197     m_q(NULL),
   204     mNotifierFilter(NULL),
   198     mNotifierFilter(NULL),
   205     mNotifierProxy(NULL)
   199     mNotifierProxy(NULL)
   206 {
   200 {
   207         mNotifierFilter = new CaNotifierFilter(notifierFilter);
   201     mNotifierFilter = new CaNotifierFilter(notifierFilter);
   208 }
   202 }
   209 
   203 
   210 /*!
   204 /*!
   211  Destructor.
   205  Destructor.
   212  */
   206  */
   213 CaNotifierPrivate::~CaNotifierPrivate()
   207 CaNotifierPrivate::~CaNotifierPrivate()
   214 {
   208 {
   215     if (mNotifierProxy) {
   209     if (mNotifierProxy) {
   216         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   210         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   217             EntryChangedWithIdNotifierType);
   211                                            EntryChangedWithIdNotifierType);
   218         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   212         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   219             EntryChangedWithEntryNotifierType);
   213                                            EntryChangedWithEntryNotifierType);
   220         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   214         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   221             EntryTouchedNotifierType);
   215                                            EntryTouchedNotifierType);
   222         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   216         mNotifierProxy->unregisterNotifier(*mNotifierFilter,
   223             GroupContentChangedNotifierType);
   217                                            GroupContentChangedNotifierType);
   224     }
   218     }
   225     delete mNotifierFilter;
   219     delete mNotifierFilter;
   226     delete mNotifierProxy;
   220     delete mNotifierProxy;
   227 }
   221 }
   228 /*!
   222 /*!
   231  */
   225  */
   232 int CaNotifierPrivate::registerNotifier(NotifierType notifierType)
   226 int CaNotifierPrivate::registerNotifier(NotifierType notifierType)
   233 {
   227 {
   234     if (mNotifierProxy) {
   228     if (mNotifierProxy) {
   235         return mNotifierProxy->registerNotifier(
   229         return mNotifierProxy->registerNotifier(
   236             mNotifierFilter,
   230                    mNotifierFilter,
   237             notifierType,
   231                    notifierType,
   238             mNotifierProxy);
   232                    mNotifierProxy);
   239     }
   233     }
   240     return 0;
   234     return 0;
   241 }
   235 }
   242 /*!
   236 /*!
   243  Unregisters notifier
   237  Unregisters notifier
   259     if (m_q) {
   253     if (m_q) {
   260         if (!mNotifierProxy) {
   254         if (!mNotifierProxy) {
   261             mNotifierProxy = new CaClientNotifierProxy();
   255             mNotifierProxy = new CaClientNotifierProxy();
   262         }
   256         }
   263         m_q->connect(mNotifierProxy,
   257         m_q->connect(mNotifierProxy,
   264             SIGNAL(signalEntryChanged(int,ChangeType)),
   258                      SIGNAL(signalEntryChanged(int,ChangeType)),
   265             m_q,
   259                      m_q,
   266             SIGNAL(entryChanged(int,ChangeType)));
   260                      SIGNAL(entryChanged(int,ChangeType)));
   267         m_q->connect(mNotifierProxy,
   261         m_q->connect(mNotifierProxy,
   268             SIGNAL(signalEntryChanged(const CaEntry &,ChangeType)),
   262                      SIGNAL(signalEntryChanged(const CaEntry &,ChangeType)),
   269             m_q,
   263                      m_q,
   270             SIGNAL(entryChanged(const CaEntry &,ChangeType)));
   264                      SIGNAL(entryChanged(const CaEntry &,ChangeType)));
   271         m_q->connect(mNotifierProxy,
   265         m_q->connect(mNotifierProxy,
   272             SIGNAL(signalEntryTouched(int)),
   266                      SIGNAL(signalEntryTouched(int)),
   273             m_q,
   267                      m_q,
   274             SIGNAL(entryTouched(int)));
   268                      SIGNAL(entryTouched(int)));
   275         m_q->connect(mNotifierProxy,
   269         m_q->connect(mNotifierProxy,
   276             SIGNAL(signalGroupContentChanged(int)),
   270                      SIGNAL(signalGroupContentChanged(int)),
   277             m_q,
   271                      m_q,
   278             SIGNAL(groupContentChanged(int)));
   272                      SIGNAL(groupContentChanged(int)));
   279     }
   273     }
   280 }
   274 }
   281 /*!
   275 /*!
   282  Disconnects this Notifier
   276  Disconnects this Notifier
   283  */
   277  */
   284 void CaNotifierPrivate::makeDisconnect()
   278 void CaNotifierPrivate::makeDisconnect()
   285 {
   279 {
   286     if (m_q && mNotifierProxy) {
   280     if (m_q && mNotifierProxy) {
   287         m_q->disconnect(mNotifierProxy,
   281         m_q->disconnect(mNotifierProxy,
   288             SIGNAL(signalEntryChanged(int,ChangeType)),
   282                         SIGNAL(signalEntryChanged(int,ChangeType)),
   289             m_q,
   283                         m_q,
   290             SIGNAL(entryChanged(int,ChangeType)));
   284                         SIGNAL(entryChanged(int,ChangeType)));
   291         m_q->disconnect(mNotifierProxy,
   285         m_q->disconnect(mNotifierProxy,
   292             SIGNAL( signalEntryChanged(const CaEntry &,ChangeType)),
   286                         SIGNAL(signalEntryChanged(const CaEntry &,ChangeType)),
   293             m_q,
   287                         m_q,
   294             SIGNAL(entryChanged(const CaEntry &,ChangeType)));
   288                         SIGNAL(entryChanged(const CaEntry &,ChangeType)));
   295         m_q->disconnect(mNotifierProxy,
   289         m_q->disconnect(mNotifierProxy,
   296             SIGNAL(signalEntryTouched(int)),
   290                         SIGNAL(signalEntryTouched(int)),
   297             m_q,
   291                         m_q,
   298             SIGNAL(entryTouched(int)));
   292                         SIGNAL(entryTouched(int)));
   299         m_q->disconnect(mNotifierProxy,
   293         m_q->disconnect(mNotifierProxy,
   300             SIGNAL(signalGroupContentChanged(int)),
   294                         SIGNAL(signalGroupContentChanged(int)),
   301             m_q,
   295                         m_q,
   302             SIGNAL(groupContentChanged(int)));
   296                         SIGNAL(groupContentChanged(int)));
   303     }
   297     }
   304 }
   298 }