示例#1
0
void YahooClient::loadList(const char *str)
{
    Contact *contact;
    ContactList::ContactIterator it;
    while ((contact = ++it) != NULL) {
        YahooUserData *data;
        ClientDataIterator itd(contact->clientData, this);
        while ((data = (YahooUserData*)(++itd)) != NULL) {
            data->bChecked.bValue = (contact->getGroup() == 0);
        }
    }
    if (str) {
        string s = str;
        while (!s.empty()) {
            string line = getToken(s, '\n');
            string grp = getToken(line, ':');
            if (line.empty()) {
                line = grp;
                grp = "";
            }
            while (!line.empty()) {
                string id = getToken(line, ',');
                Contact *contact;
                YahooUserData *data = findContact(id.c_str(), grp.c_str(), contact, false);
                data->bChecked.bValue = true;
            }
        }
    }
    it.reset();
    list<Contact*> forRemove;
    while ((contact = ++it) != NULL) {
        YahooUserData *data;
        ClientDataIterator itd(contact->clientData, this);
        list<YahooUserData*> dataForRemove;
        bool bChanged = false;
        while ((data = (YahooUserData*)(++itd)) != NULL) {
            if (!data->bChecked.bValue) {
                dataForRemove.push_back(data);
                bChanged = true;
            }
        }
        if (!bChanged)
            continue;
        for (list<YahooUserData*>::iterator it = dataForRemove.begin(); it != dataForRemove.end(); ++it)
            contact->clientData.freeData(*it);
        if (contact->clientData.size()) {
            Event e(EventContactChanged, contact);
            e.process();
        } else {
            forRemove.push_back(contact);
        }
    }
    for (list<Contact*>::iterator itr = forRemove.begin(); itr != forRemove.end(); ++itr)
        delete *itr;
}
示例#2
0
void SdDurationCanvas::update_hpos() {
  move(support->sub_x(width()), 100000);
  
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  for (; itd.current(); ++itd)
    itd.current()->update_hpos();
}
示例#3
0
QStringList QSqlDatabase::drivers()
{
    QStringList l;

#ifndef QT_NO_COMPONENT
    QPluginManager<QSqlDriverFactoryInterface> *plugIns;
    plugIns = new QPluginManager<QSqlDriverFactoryInterface>( IID_QSqlDriverFactory, QApplication::libraryPaths(), "/sqldrivers" );

    l = plugIns->featureList();
    delete plugIns;
#endif

    QDictIterator<QSqlDriverCreatorBase> itd( *QSqlDatabaseManager::driverDict() );
    while ( itd.current() ) {
	if ( !l.contains( itd.currentKey() ) )
	    l << itd.currentKey();
	++itd;
    }

#ifdef QT_SQL_POSTGRES
    if ( !l.contains( "QPSQL7" ) )
	l << "QPSQL7";
#endif
#ifdef QT_SQL_MYSQL
    if ( !l.contains( "QMYSQL3" ) )
	l << "QMYSQL3";
#endif
#ifdef QT_SQL_ODBC
    if ( !l.contains( "QODBC3" ) )
	l << "QODBC3";
#endif
#ifdef QT_SQL_OCI
    if ( !l.contains( "QOCI8" ) )
	l << "QOCI8";
#endif
#ifdef QT_SQL_TDS
    if ( !l.contains( "QTDS7" ) )
	l << "QTDS7";
#endif
#ifdef QT_SQL_DB2
    if ( !l.contains( "QDB2" ) )
	l << "QDB2";
#endif
#ifdef QT_SQL_SQLITE
    if ( !l.contains( "QSQLITE" ) )
	l << "QSQLITE";
#endif
#ifdef QT_SQL_IBASE
    if ( !l.contains( "QIBASE" ) )
	l << "QIBASE";
#endif

    return l;
}
示例#4
0
void SdDurationCanvas::cut_internal(int py) {
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  for (; itd.current(); ++itd)
    itd.current()->cut_internal(py);
  
  QRect r = rect();
  resize(width(), py - r.top());
  SdDurationCanvas * newone = 0;
  
  Q3PtrList<SdMsgBaseCanvas> ms(msgs);
  Q3PtrListIterator<SdMsgBaseCanvas> it(ms);
  
  for ( ; it.current(); ++it ) {
    if (it.current()->rect().center().y() > py) {
      // on the new duration
      if (newone == 0) { 
	// width and height to 0 on creation to not have
	// a round error because of the zoom
	newone = new SdDurationCanvas(the_canvas(), support, r.x(), py, 0, 0, 0, coregion);
	newone->resize(width(), r.bottom() - py);
	newone->itscolor = itscolor;
	newone->setZ(z());
	newone->show();
      }
      remove(it.current());
      newone->add(it.current());
      it.current()->change_duration(this, newone);
    }
  }
  
  Q3PtrList<SdDurationCanvas> durs(durations);
  Q3PtrListIterator<SdDurationCanvas> itdur(durs);
  
  for (itdur.toFirst() ; itdur.current(); ++itdur) {
    if (itdur.current()->rect().center().y() > py) {
      // on the new duration
      if (newone == 0) { 
	// width and height to 0 on creation to not have 
	// a round error because of the zoom
	newone = new SdDurationCanvas(the_canvas(), support, r.x(), py, 0, 0, 0, coregion);
	newone->resize(width(), r.bottom() - py);
	newone->itscolor = itscolor;
	newone->setZ(z());
	newone->show();
      }
      remove(itdur.current());
      newone->add(itdur.current());
      itdur.current()->support =  newone;
    }
    
    itdur.current()->update_v_to_contain(itdur.current(), TRUE);
  }
}
示例#5
0
void Services::statusChanged()
{
    bool bOnline = m_client->getStatus() != STATUS_OFFLINE;
    if (m_bOnline == bOnline)
        return;
    m_bOnline = bOnline;
    if (m_bOnline){
        lblOffline->hide();
        lblOffline2->hide();
        lblRegistered->show();
        lstAgents->show();
        btnLogon->show();
        btnLogoff->show();
        btnUnregister->show();
        cmbAgents->show();
        wndInfo->show();
        btnRegister->show();
        m_client->get_agents();
        Contact *contact;
        ContactList::ContactIterator it;
        while ((contact = ++it) != NULL){
            ClientDataIterator itd(contact->clientData, m_client);
            JabberUserData *data;
            while ((data = ((JabberUserData*)(++itd))) != NULL){
                if (!m_client->isAgent(data->ID))
                    continue;
                makeAgentItem(data, contact->id());
            }
        }
    }else{
        cmbAgents->clear();
        for (AGENTS_MAP::iterator it = m_agents.begin(); it != m_agents.end(); ++it){
            agentInfo &info = (*it).second;
            if (info.search){
                delete info.search;
            }
        }
        m_agents.clear();
        lblOffline->show();
        lblOffline2->show();
        cmbAgents->hide();
        wndInfo->hide();
        btnRegister->hide();
        lblRegistered->hide();
        lstAgents->hide();
        lstAgents->clear();
        btnLogon->hide();
        btnLogoff->hide();
        btnUnregister->hide();
    }
}
示例#6
0
void SdDurationCanvas::prepare_for_move(bool on_resize) {  
  DiagramCanvas::prepare_for_move(on_resize);
  
  if (! on_resize) {
    Q3PtrListIterator<SdDurationCanvas> itd(durations);
    
    for (; itd.current(); ++itd) {
      if (! itd.current()->selected()) {
	the_canvas()->select(itd.current());
	itd.current()->prepare_for_move(on_resize);    
      }
    }
  }
}
示例#7
0
YahooUserData *YahooClient::findContact(const char *id, const char *grpname, Contact *&contact, bool bSend)
{
    ContactList::ContactIterator it;
    while ((contact = ++it) != NULL) {
        YahooUserData *data;
        ClientDataIterator itd(contact->clientData);
        while ((data = (YahooUserData*)(++itd)) != NULL) {
            if (data->Login.ptr && !strcmp(id, data->Login.ptr))
                return data;
        }
    }
    it.reset();
    while ((contact = ++it) != NULL) {
        if (contact->getName() == id) {
            YahooUserData *data = (YahooUserData*)contact->clientData.createData(this);
            set_str(&data->Login.ptr, id);
            set_str(&data->Group.ptr, grpname);
            Event e(EventContactChanged, contact);
            e.process();
            return data;
        }
    }
    if (grpname == NULL)
        return NULL;
    Group *grp = NULL;
    if (*grpname) {
        ContactList::GroupIterator it;
        while ((grp = ++it) != NULL)
            if (grp->getName() == QString::fromLocal8Bit(grpname))
                break;
        if (grp == NULL) {
            grp = getContacts()->group(0, true);
            grp->setName(QString::fromLocal8Bit(grpname));
            Event e(EventGroupChanged, grp);
            e.process();
        }
    }
    if (grp == NULL)
        grp = getContacts()->group(0);
    contact = getContacts()->contact(0, true);
    YahooUserData *data = (YahooUserData*)(contact->clientData.createData(this));
    set_str(&data->Login.ptr, id);
    contact->setName(id);
    contact->setGroup(grp->id());
    Event e(EventContactChanged, contact);
    e.process();
    if (bSend)
        addBuddy(data);
    return data;
}
示例#8
0
void SdDurationCanvas::postToOverlapping() {
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  for (; itd.current(); ++itd)
    itd.current()->postToOverlapping();
  
  Q3PtrListIterator<SdMsgBaseCanvas> it(msgs);
  
  for ( ; it.current(); ++it ) {
    it.current()->upper();
    it.current()->update_hpos();
    ((DiagramItem *) it.current())->update();	// not QCanvasItem::update
  }
}
示例#9
0
void BrowserView::update_it()
{
    if (lbl == 0)
        lbl = new QLabel(parentWidget());

    int nold = 0;
    int ndel = 0;

    Q3DictIterator<BrowserNode> itd(nodes);

    for (; itd.current(); ++itd) {
        BrowserNode * bn = itd.current();

        switch (bn->get_state()) {
        case Old:
            nold += 1;
            break;

        case Deleted:
            ndel += 1;
            break;

        default:
            break;
        }
    }

    QString s;

    if (nold != 0) {
        need_update = TRUE;

        s = QString::number(nold) + " need update";

        if (ndel != 0)
            s += ", " + QString::number(ndel) + " deleted";

        if (cant_update)
            s += ", RO !";

        lbl->setText(s);
    }
    else
        lbl->setText("Up to date");

    lbl->show();

    triggerUpdate();
}
示例#10
0
void SMSClient::phonebookEntry(int index, int type, const QString &phone, const QString &name)
{
    bool bNew = false;
    Contact *contact;
    ContactList::ContactIterator it;
    while ((contact = ++it) != NULL){
        smsUserData *data;
        ClientDataIterator itd(contact->clientData);
        while ((data = (smsUserData*)(++itd)) != NULL){
            if (name == QString::fromUtf8(data->Name.ptr))
                break;
        }
        if (data)
            break;
    }
    if (contact == NULL){
        contact = getContacts()->contactByPhone(phone.latin1());
        if (contact->getFlags() & CONTACT_TEMPORARY){
            bNew = true;
            contact->setFlags(contact->getFlags() & ~CONTACT_TEMPORARY);
            contact->setName(name);
        }
    }
    QString phones = contact->getPhones();
    bool bFound = false;
    while (!phones.isEmpty()){
        QString item = getToken(phones, ';', false);
        QString number = getToken(item, ',');
        if (number == phone){
            bFound = true;
            break;
        }
    }
    if (!bFound){
        phones = contact->getPhones();
        if (!phones.isEmpty())
            phones += ";";
        contact->setPhones(phones + phone + ",,2/-");
    }
    smsUserData *data = (smsUserData*)contact->clientData.createData(this);
    set_str(&data->Phone.ptr, phone.utf8());
    set_str(&data->Name.ptr, name.utf8());
    data->Index.value = index;
    data->Type.value  = type;
    if (bNew){
        Event e(EventContactChanged, contact);
        e.process();
    }
}
示例#11
0
void SdDurationCanvas::propag_visible(Q3PtrList<SdDurationCanvas> & l, bool y)
{
  Q3PtrListIterator<SdDurationCanvas> itd(l);
  SdDurationCanvas * d;
  
  for ( ; (d = itd.current()) != 0; ++itd ) {
    d->Q3CanvasItem::setVisible(y);
    
    Q3PtrListIterator<SdMsgBaseCanvas> itm(d->msgs);
    
    for ( ; itm.current(); ++itm )
      itm.current()->Q3CanvasItem::setVisible(y);
    
    propag_visible(d->durations, y);
  }
}
示例#12
0
void ICQClient::fetchProfiles()
{
    if (data.owner.ProfileFetch.bValue == 0)
        fetchProfile(&data.owner);
    Contact *contact;
    ContactList::ContactIterator itc;
    while ((contact = ++itc) != NULL){
        ICQUserData *data;
        ClientDataIterator itd(contact->clientData, this);
        while ((data = (ICQUserData*)(++itd)) != NULL){
            if (data->Uin.value || data->ProfileFetch.bValue)
                continue;
            fetchProfile(data);
        }
    }
}
示例#13
0
unsigned SdDurationCanvas::count_msg(int api_format) const {
  unsigned count = 0;
  Q3PtrListIterator<SdMsgBaseCanvas> itm(msgs);
  double maxy = 0;
  bool isreturn = FALSE;
  
  for (; itm.current(); ++itm) {
    switch (itm.current()->type()) {
    case UmlSyncMsg:
    case UmlAsyncMsg:
    case UmlReturnMsg:
      if (itm.current()->get_dest() == (const SdMsgSupport *) this)
	break;
      // no break
    default:
      // msg starts from duration or duration ends a found msg
      count += 1;
    }
    
    if (itm.current()->y() > maxy) {
      maxy = itm.current()->y();
      
      switch (itm.current()->type()) {
      case UmlReturnMsg:
      case UmlSelfReturnMsg:
	isreturn = TRUE;
	break;
      default:
	isreturn = FALSE;
      }
    }
  }
  
  if (!isreturn)
    count += 1;
  
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  for (; itd.current(); ++itd)
    count += itd.current()->count_msg(api_format);
  
  return count;
}
示例#14
0
void SdDurationCanvas::send(ToolCom * com, int id) const {
  Q3PtrListIterator<SdMsgBaseCanvas> itm(msgs);
  double maxy = 0;
  bool isreturn = FALSE;
  
  for (; itm.current(); ++itm) {
    switch (itm.current()->type()) {
    case UmlSyncMsg:
    case UmlAsyncMsg:
    case UmlReturnMsg:
      if (itm.current()->get_dest() == (const SdMsgSupport *) this)
	break;
      // no break
    default:
      // msg start from duration, except for found msg
      itm.current()->send(com, id);
    }
    
    if (itm.current()->y() > maxy) {
      maxy = itm.current()->y();
      
      switch (itm.current()->type()) {
      case UmlReturnMsg:
      case UmlSelfReturnMsg:
	isreturn = TRUE;
	break;
      default:
	isreturn = FALSE;
      }
    }
  }
  
  if (!isreturn)
    SdMsgBaseCanvas::send(com, id, (unsigned) x() + width(),
			  (unsigned) y() + height(),
			  anImplicitReturn, "", "", "");
  
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  for (; itd.current(); ++itd)
    itd.current()->send(com, id);
}
示例#15
0
void SdDurationCanvas::history_save(QBuffer & b) const {
  DiagramCanvas::history_save(b);
  ::save(width_scale100, b);
  ::save(height_scale100, b);
  ::save(width(), b);
  ::save(height(), b);
  ::save_ptr(support, b);
  
  Q3PtrListIterator<SdMsgBaseCanvas> it(msgs);
  
  ::save((int) msgs.count(), b);
  for (; it.current(); ++it)
    ::save(it.current(), b);
  
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  ::save((int) durations.count(), b);
  for (; itd.current(); ++itd)
    ::save(itd.current(), b);
}
示例#16
0
void SdDurationCanvas::save_internal(Q3TextStream & st) const {
  indent(+1);
  
  if (coregion) {
    nl_indent(st);
    st << "coregion";
  }      
  if (itscolor != UmlDefaultColor) {
    nl_indent(st);
    st << "color " << stringify(itscolor);
  }
  
  nl_indent(st);
  save_xyzwh(st, this, "xyzwh");
  
  Q3PtrListIterator<SdDurationCanvas> itd(durations);
  
  for (; itd.current(); ++itd)
    itd.current()->save_sub(st);
  
  indent(-1);
  nl_indent(st);
  st << "end";
}
示例#17
0
void BrowserView::update(const Q3PtrList<BrowserView> & lv)
{
  Q3Dict<Use> all_nodes(DICT_SIZE);
  Q3PtrListIterator<BrowserView> itv(lv);
  
  all_nodes.setAutoDelete(TRUE);
  
  // look at the revision in each view
  
  for (; itv.current(); ++itv) {
    Q3DictIterator<BrowserNode> itd(itv.current()->nodes);

    for (; itd.current(); ++itd) {
      BrowserNode * bn = itd.current();
      int rev = bn->get_rev();
      Use * use = all_nodes.find(itd.currentKey());
      
      if (use == 0)
	all_nodes.insert(itd.currentKey(), new Use(rev));
      else {
	if (rev < use->rev_min)
	  use->rev_min = rev;
	if (rev > use->rev_max)
	  use->rev_max = rev;
	use->count += 1;
      }
    }
  }
  
  // first solve step
  // only the package existing in all the view are solved
  
  int nviews = lv.count();
  QStringList deleted_or_new;
  
  Q3DictIterator<Use> itu(all_nodes);
  
  for (; itu.current(); ++itu) {
    QString who = itu.currentKey();
    Use * use = itu.current();
	    
    if (use->count == nviews) {
      // exist in all views : solve the state
      if (use->rev_min == use->rev_max) {
	// up to date in all views
	for (itv.toFirst(); itv.current(); ++itv)
	  itv.current()->nodes.find(who)->set_state(UpToDate);
      }
      else {
	int max = use->rev_max;
	
	for (itv.toFirst(); itv.current(); ++itv) {
	  BrowserNode * pack = itv.current()->nodes.find(who);
	  
	  pack->set_state((pack->get_rev() == max) ? Young : Old);
	}
      }
    }
    else {
      // deleted or new, mark it unknown for this step
      deleted_or_new.append(who);
      
      for (itv.toFirst(); itv.current(); ++itv) {
	BrowserNode * pack = itv.current()->nodes.find(who);
	
	if (pack != 0)
	  pack->set_state(Unknown);
      }
    }
  }
  
  all_nodes.clear();
  
  // solve packages marked unknown
  // a package is deleted if its parent is never 'Young'
  
  QStringList::Iterator it;
  
  for (it = deleted_or_new.begin(); it != deleted_or_new.end(); ++it) {
    QString who = *it;
    Q3PtrList<BrowserNode> images;
    bool young = FALSE;
    
    // set the state in each view without looking at the others
    for (itv.toFirst(); itv.current(); ++itv) {
      BrowserNode * pack = itv.current()->nodes.find(who);
      
      if (pack != 0) {
	images.append(pack);
	if (pack->solve())
	  young = TRUE;
      }
    }
    
    // set the final state if young, else all already marked deleted
    if (young) {
      BrowserNode * pack;
      
      for (pack = images.first(); pack != 0; pack = images.next())
	pack->set_state(Young);
    }
  }
  
  // force update on views
  for (itv.toFirst(); itv.current(); ++itv)
    itv.current()->update_it();
}