4 #include "contactwidget.h"
5 #include "contactwidgetitem.h"
6 #include "groupwidgetitem.h"
7 #include "contactinterface.h"
11 ContactWidget::ContactWidget(QWidget *parent) :
14 //qDebug() << "ContactWidget::ContactWidget(QWidget *parent), Entry";
15 contact_items = new QVector<ContactWidgetItem*>;
16 contact_items_selected = new QVector<ContactWidgetItem*>;
19 ContactWidget::~ContactWidget()
21 //qDebug() << "ContactWidget::~ContactWidget(), Entry";
22 destroyContactWidget();
25 void ContactWidget::setItemObserver()
27 ContactInterface::getInstance()->setItemObserver( this );
30 void ContactWidget::initContactWidget()
32 //qDebug() << "ContactWidget::initContactWidget(), Entry";
35 ContactInterface::getInstance()->getAllContactsFromXml();
38 void ContactWidget::destroyContactWidget()
40 //qDebug() << ("ContactWidget::destroyContactWidget(), Entry");
42 for (int i = 0; i < contact_items->size(); ++i)
44 contact_items->remove(i);
46 contact_items->clear();
50 for (int i = 0; i < contact_items_selected->size(); ++i)
52 contact_items_selected->remove(i);
54 contact_items_selected->clear();
55 delete contact_items_selected;
56 contact_items_selected = NULL;
58 //qDebug() << ("ContactWidget::destroyContactWidget(), Exit");
61 int ContactWidget::findGroup(const QString &groupname)
63 for( int i = 0; i < contact_items->size(); i++ )
65 if( contact_items->at(i)->m_isGroup )
67 if( groupname == (static_cast<GroupWidgetItem*>(contact_items->at(i)))->group_name )
75 void ContactWidget::refreshContactsList()
81 void ContactWidget::removeContact(Item *contact)
83 for (int i = 0; i < contact_items->size(); ++i)
85 if( contact->uid == contact_items->at(i)->uid && contact->group_owner == contact_items->at(i)->group_owner )
87 disconnect( contact_items->at(i), SIGNAL( itemUpdate() ), this, SLOT( update() ) );
88 disconnect( contact_items->at(i), SIGNAL( itemSelected( ContactWidgetItem*, bool) ), this, SLOT( contactItemSelected( ContactWidgetItem*, bool ) ) );
89 contact_items->remove(i);
96 void ContactWidget::removeAllContacts()
98 for (int i = 0; i < contact_items->size(); ++i)
100 delete contact_items->at(i);
102 contact_items->clear();
106 void ContactWidget::addGroup( Item *item )
108 //qDebug() << "ContactWidget::addGroup( Item *item ), Entry";
109 GroupWidgetItem *group = new GroupWidgetItem(this);
110 group->group_name = item->group_name;
111 group->label_group_name->setText( item->group_name );
113 contact_items->append( group );
115 connect( group, SIGNAL( itemUpdate() ), this, SLOT( update() ) );
116 connect( group, SIGNAL( itemSelected( ContactWidgetItem*, bool) ), this, SLOT( contactItemSelected( ContactWidgetItem*, bool ) ) );
122 void ContactWidget::addContact( Item *item )
124 addContact(item, -1);
127 void ContactWidget::addContact(ContactWidgetItem *contact, int index)
129 //qDebug() << ("ContactWidget::addContact(ContactWidgetItem *contact), Entry");
130 //qDebug() << "contact is" << (int)contact;
131 if( -1 == index || index >= contact_items->size() )
133 contact_items->append(contact);
136 contact_items->insert( ++index, contact);
139 connect( contact, SIGNAL( itemUpdate() ), this, SLOT( update() ) );
140 connect( contact, SIGNAL( itemSelected( ContactWidgetItem*, bool) ), this, SLOT( contactItemSelected( ContactWidgetItem*, bool ) ) );
143 void ContactWidget::addContact( Item *item, int groupindex )
145 //qDebug() << "ContactWidget::addContact( Item *item, int groupindex ), Entry";
146 if( item->m_isGroup )
148 GroupWidgetItem *contact = new GroupWidgetItem(this);
150 contact->label_group_name->setText( item->group_name );
151 contact->group_name = item->group_name;
153 addContact( (static_cast<ContactWidgetItem*>(contact)), groupindex );
156 ContactWidgetItem *contact = new ContactWidgetItem(this);
158 contact->label_fullname->setText( item->full_name );
159 contact->full_name = item->full_name;
161 contact->label_mobile_number->setText( item->mobile_number );
162 contact->mobile_number = item->mobile_number;
164 contact->group_owner = item->group_owner;
166 contact->uid = item->uid;
168 addContact(contact, groupindex);
173 void ContactWidget::addContact( Item *item, const QString &groupname )
175 int groupindex = findGroup( groupname );
176 addContact( item, groupindex);
180 void ContactWidget::addContact( ItemListPtr items, const QString &groupname )
182 //qDebug() << "addContact(const QString &groupname, Item &item)";
183 int groupindex = findGroup( groupname );
185 for( int i = 0; i < items.size(); i++ )
187 Item *item = items.at(i);
189 addContact( item, groupindex);
195 void ContactWidget::addContact( ItemList items, const QString &groupname )
197 //qDebug() << "addContact(const QString &groupname, Item &item)";
198 int groupindex = findGroup( groupname );
200 for( int i = 0; i < items.size(); i++ )
202 Item item = items.at(i);
204 addContact( &item, groupindex);
209 void ContactWidget::cleanContactList()
211 for (int i = 0; i < contact_items->size(); ++i)
213 disconnect( contact_items->at(i), SIGNAL( itemUpdate() ), this, SLOT( update() ) );
214 disconnect( contact_items->at(i), SIGNAL( itemSelected( ContactWidgetItem*, bool) ), this, SLOT( contactItemSelected( ContactWidgetItem*, bool ) ) );
216 contact_items->clear();
219 void ContactWidget::cleanSelectedContactList()
221 contact_items_selected->clear();
227 void ContactWidget::refreshContactList()
229 //qDebug() << "ContactWidget::refreshContactList()";
232 ContactInterface::getInstance()->getAllContactsFromXml();
233 for (int i = 0; i < contact_items->size(); ++i)
235 connect( contact_items->at(i), SIGNAL( itemUpdate() ), this, SLOT( update() ) );
236 connect( contact_items->at(i), SIGNAL( itemSelected( ContactWidgetItem*, bool) ), this, SLOT( contactItemSelected( ContactWidgetItem*, bool ) ) );
242 void ContactWidget::resetContacts()
244 //qDebug() << ("ContactWidget::resetContacts(), Entry");
245 for (int i = 0; i < contact_items->size(); ++i)
247 if( contact_items->at(i)->m_isGroup )
249 (static_cast<GroupWidgetItem*>(contact_items->at(i)))->reSet();
252 contact_items->at(i)->reSet();
257 void ContactWidget::update()
259 update( contact_items );
262 void ContactWidget::update(QVector<ContactWidgetItem *> *items)
264 //qDebug() << ("ContactWidget::update(), Entry");
266 bool group_open = false;
267 int size = items->size();
268 //qDebug() << "size is" << items->size();
271 for( int i = 0; i < size; i++ )
273 ContactWidgetItem *item = items->at(i);
274 if( item->m_isGroup )
276 //qDebug() << "ContactWidget::update(), item is group";
279 y = (static_cast<GroupWidgetItem*>(item))->move(x, y, this);
280 if( (static_cast<GroupWidgetItem*>(item))->m_isOpenContactList )
282 x += CONTACT_ITEM_MARGE_WIDTH;
284 //qDebug() << "group open is true. x =" << x;
286 (static_cast<GroupWidgetItem*>(item))->showAll();
290 //qDebug() << "ContactWidget::update(), item is contact";
293 y = item->move(x, y, this);
302 resize( qApp->desktop()->rect().width(), y );
304 //qDebug() << ("ContactWidget::update(), Exit");
307 void ContactWidget::paintEvent(QPaintEvent *event)
309 //qDebug() << "ContactWidget::paintEvent(QPaintEvent *event), Entry";
311 QPainter painter(this);
312 for (int i = 0; i < contact_items->size(); i++) {
313 //ContactWidgetItem *item = contact_items->at(i);
314 //painter.fillRect(0, item->m_x, width(), item->m_height, QBrush(item->m_color));
315 //qDebug() << "paint item at:" << i << "m_x=" << item->m_x << "m_height=" << item->m_height;
320 void ContactWidget::resizeEvent(QResizeEvent *event)
323 //qDebug() << ("ContactWidget::resizeEvent(QResizeEvent *event), Entry");
326 void ContactWidget::contactItemSelected( ContactWidgetItem *item, bool selected )
328 //qDebug() << ("ContactWidget::contactItemSelected( ContactWidgetItem *item, bool selected ), Entry");
329 //qDebug() << "item is" << (int)item;
333 //qDebug() << "contact_items_selected->append(item)" << item->full_name;
334 if( item->m_isGroup )
336 QString str = (static_cast<GroupWidgetItem*>(item))->group_name;
337 for( int i = 0; i < contact_items->size(); i++ )
339 if( contact_items->at(i)->group_owner == str )
341 contact_items_selected->append( contact_items->at(i) );
342 contact_items->at(i)->setSelected(true);
347 contact_items_selected->append(item);
348 checkGroupPartOfSelected(item);
352 if( item->m_isGroup )
354 QString str = (static_cast<GroupWidgetItem*>(item))->group_name;
355 for( int i = 0; i < contact_items_selected->size(); i++ )
357 if( contact_items_selected->at(i)->group_owner == str )
359 contact_items_selected->remove( i );
360 contact_items->at(i)->setSelected(false);
365 for( int i = 0; i < contact_items_selected->size(); i++ )
367 if( contact_items_selected->at(i)->uid == item->uid )
369 contact_items_selected->remove( i );
370 checkGroupPartOfSelected( item );
376 Q_EMIT validRecycle( isValidRecycle() );
379 void ContactWidget::checkGroupPartOfSelected(ContactWidgetItem* item)
381 bool partselected = false;
382 GroupWidgetItem* group = NULL;
383 QString str = item->group_owner;
384 for( int i = 0; i < contact_items->size(); i++ )
386 if( contact_items->at(i)->m_isGroup && str == (static_cast<GroupWidgetItem*>(contact_items->at(i)))->group_name )
388 group = (static_cast<GroupWidgetItem*>(contact_items->at(i)));
393 for( int i = 0; i < contact_items_selected->size(); i++ )
395 if( group->group_name == contact_items_selected->at(i)->group_owner )
403 group->partOfAllSeleted();
406 group->setSelected(false);
410 QVector<ContactWidgetItem*>* ContactWidget::getSelectedContacts()
412 return contact_items_selected;
415 bool ContactWidget::isValidRecycle()
417 if( contact_items_selected->size() > 0 )
422 void ContactWidget::removeSelectedContact()
425 for( int i = 0; i < contact_items_selected->size(); i++ )
427 ContactWidgetItem *contact = contact_items_selected->at(i);
428 if( contact->m_isGroup )
433 Item *item = new Item();
434 item->uid = contact->uid;
435 item->full_name = contact->full_name;
436 item->mobile_number = contact->mobile_number;
437 item->group_owner = contact->group_owner;
441 ContactInterface::getInstance()->removeContactToGroup(list);
442 contact_items_selected->clear();