📄 qundetailswindow.cpp
字号:
void QunDetailsWindow::initTable( ){ QHeader *vheader = tblMembers->verticalHeader(); vheader->hide(); tblMembers->setLeftMargin(0); tblMembers->setNumRows( 0 ); tblMembers->setNumCols( 4 ); tblMembers->setColumnWidth(0, 16); tblMembers->setColumnWidth(1, 90); tblMembers->setColumnWidth(2, 110); tblMembers->setColumnWidth(3, 34); tblMembers->horizontalHeader()->setLabel( 0, i18n( " " ) ); tblMembers->horizontalHeader()->setLabel( 1, i18n( "QQ" ) ); tblMembers->horizontalHeader()->setLabel( 2, i18n( "Nick" ) ); tblMembers->horizontalHeader()->setLabel( 3, i18n( "Gender" ) ); tblMembers->setSelectionMode( QTable::SingleRow ); tblMembers->setFocusStyle( QTable::FollowStyle ); tblMembers->setReadOnly( true ); QObject::connect(tblMembers, SIGNAL(clicked(int,int,int,const QPoint&)), SLOT(slotTableClicked(int,int,int,const QPoint&))); unsigned int myid = EvaMain::user->getQQ(); if( mQun->isAdmin( myid) || mQun->getDetails().getCreator() == myid){ pbSetMembers->setEnabled(true); printf("setMember enabled\n"); } else { pbSetMembers->setEnabled(false); printf("setMember disabled\n"); } pbAddToMe->setEnabled(false); pbDelMembers->setEnabled(false); pbSetAdmin->setEnabled(false); pbUnsetAdmin->setEnabled(false); pbTransfer->setEnabled(false); QObject::connect(pbSetMembers, SIGNAL(clicked()), SLOT(slotSetMembersClicked())); QObject::connect(pbAddToMe, SIGNAL(clicked()), SLOT(slotAddToMeClicked())); QObject::connect(pbDelMembers, SIGNAL(clicked()), SLOT(slotDelMembersClicked())); QObject::connect(pbSetAdmin, SIGNAL(clicked()), SLOT(slotSetAdminClicked())); QObject::connect(pbUnsetAdmin, SIGNAL(clicked()), SLOT(slotUnsetAdminClicked())); QObject::connect(pbTransfer, SIGNAL(clicked()), SLOT(slotTransferClicked()));}void QunDetailsWindow::slotTableClicked( int row, int /*col*/, int /*button*/, const QPoint & /*mousePos*/ ){ QString num = tblMembers->text(row, 1); bool ok; unsigned int id = num.toUInt(&ok); unsigned int myID = EvaMain::user->getQQ(); if(ok){ const FriendItem *item = mQun->getMemberDetails(id); if(!item){ pbSetMembers->setEnabled(true); pbAddToMe->setEnabled(false); pbDelMembers->setEnabled(true); pbSetAdmin->setEnabled(false); pbUnsetAdmin->setEnabled(false); pbTransfer->setEnabled(false); return; } if(EvaMain::user->getFriendList().hasFriend(id) || myID == item->getQQ()){ pbAddToMe->setEnabled(false); }else{ pbAddToMe->setEnabled(true); } if(myID != mQun->getDetails().getCreator() && !mQun->isAdmin(myID)){ pbSetMembers->setEnabled(false); return; // neither creator nor admin, we just return }else pbSetMembers->setEnabled(true); if(myID == item->getQQ()) pbDelMembers->setEnabled(false); else pbDelMembers->setEnabled(true); pbTransfer->setEnabled(false); if( myID == mQun->getDetails().getCreator()){ if(id != myID){ // selected other member if(item->getQunAdminValue() & QUN_TYPE_ADMIN ){ pbSetAdmin->setEnabled(false); pbUnsetAdmin->setEnabled(true); } else { pbSetAdmin->setEnabled(true); pbUnsetAdmin->setEnabled(false); } pbTransfer->setEnabled(true); } } } else { pbAddToMe->setEnabled(false); pbDelMembers->setEnabled(false); pbSetAdmin->setEnabled(false); pbUnsetAdmin->setEnabled(false); pbTransfer->setEnabled(false); }}void QunDetailsWindow::slotSetMembersClicked(){ if(picker->isVisible()){ pbSetMembers->setText(i18n("&Members >>")); picker->hide(); }else{ pbSetMembers->setText(i18n("&Members <<")); picker->move(x() + frameGeometry().width(), y()); picker->show(); }}void QunDetailsWindow::slotAddToMeClicked(){ QString num = tblMembers->text(tblMembers->currentRow(), 1); bool ok; int id = num.toInt(&ok); if(ok){ const FriendItem *item = mQun->getMemberDetails(id); //emit requestAddBuddy(id); emit requestAddBuddy(id, codec->toUnicode(item->getNick().c_str()), item->getFace()); close(); } }void QunDetailsWindow::slotDelMembersClicked(){ int row = tblMembers->currentRow(); QString txt = tblMembers->text(row, 1); bool ok; unsigned int id = txt.toUInt(&ok); if(!ok) return; if(id == EvaMain::user->getQQ()) return; tblMembers->removeRow(row); tblMembers->selectRow(0); slotTableClicked(0, 1, 0, QPoint(0,0)); emit removeMember(id);}void QunDetailsWindow::slotSetAdminClicked(){ QString num = tblMembers->text(tblMembers->currentRow(), 1); bool ok; int id = num.toInt(&ok); if(ok){ pbSetAdmin->setEnabled(false); emit requestQunSetAdmin(mQun->getQunID(), id, true); // note last arg "true" means to set id as an Administrator }}void QunDetailsWindow::slotUnsetAdminClicked(){ QString num = tblMembers->text(tblMembers->currentRow(), 1); bool ok; int id = num.toInt(&ok); if(ok){ pbUnsetAdmin->setEnabled(false); emit requestQunSetAdmin(mQun->getQunID(), id, false); // note last arg "false" means to unset Administrator on id }}void QunDetailsWindow::slotTransferClicked(){ QString num = tblMembers->text(tblMembers->currentRow(), 1); bool ok; int id = num.toInt(&ok); if(ok){ pbTransfer->setEnabled(false); emit requestQunTransfer(mQun->getQunID(), id); } }void QunDetailsWindow::slotSetAdmin(const unsigned int id, const bool ok, const unsigned int qq, const bool isSetAdmin, QString msg){ if(ok && id != mQun->getQunID()) return; QString title = i18n("Qun Administrator Setting"); QString message; if(isSetAdmin) message = QString(i18n("Set \"%1\" as Qun administrator sucessfully.")).arg(qq); else message = QString(i18n("Unset \"%1\" as Qun administrator sucessfully.")).arg(qq); if(ok){ QMessageBox::information(this, title, message); //slotClose( ); } else { QMessageBox::information(this, title, msg); }}void QunDetailsWindow::slotTransferQun( const unsigned int id, const bool ok, const unsigned int qq, QString msg ){ if(ok && id != mQun->getQunID()) return; QString title = i18n("Qun Transfer"); if(ok){ QMessageBox::information(this, title, QString(i18n("Transfer Qun to \"%1\" sucessfully.")).arg(qq)); //slotClose( ); } else { QMessageBox::information(this, title, msg); } }void QunDetailsWindow::slotClose( ){ close();}void QunDetailsWindow::closeEvent( QCloseEvent * event){ if(picker) delete picker; picker=NULL; QunDetailsUI::closeEvent(event); deleteLater();}void QunDetailsWindow::moveEvent( QMoveEvent * event ){ if(picker) picker->move(x() + frameGeometry().width(), y()); QunDetailsUI::moveEvent(event);}void QunDetailsWindow::slotPickerMemberClicked( const unsigned int id, const bool isChecked ){ int row; unsigned int qq; bool ok; QString txt; if(isChecked){ const QQFriend * frd = (EvaMain::user->getFriendList()).getFriend(id); if(!frd) return; //if(mQun->hasMember(frd->getQQ())) return; for(row=0; row<tblMembers->numRows(); row++){ txt = tblMembers->text(row, 1); qq = txt.toInt(&ok); if(!ok) continue; if(qq == id) return; } unsigned short face; QString nick; face = frd->getFace(); nick = codec->toUnicode(frd->getNick().c_str()); row = tblMembers->numRows(); // note: the index is start from 0 tblMembers->setNumRows(tblMembers->numRows() + 1); QPixmap *bmpFace = EvaMain::images->getFace(EvaMain::images->getFaceFileIndex(face)); if(bmpFace){ QImage img(bmpFace->convertToImage().smoothScale(16, 16)); tblMembers->setPixmap(row, 1, QPixmap(img)); } tblMembers->setText(row,1,QString::number(id)); tblMembers->setText(row,2,nick); tblMembers->setText(row,3, frd->isBoy()?i18n("Male"):i18n("Female")); }else { bool ok; QString txt; unsigned int qq; for(row = 0; row < tblMembers->numRows(); row ++){ txt = tblMembers->text(row, 1); qq = txt.toInt(&ok); if(!ok) continue; if(qq == id){ tblMembers->removeRow(row); return; } } }}void QunDetailsWindow::slotModifyMembers( ){ std::list<unsigned int> removeList; std::list<unsigned int> addList; std::list<FriendItem>::iterator iter; std::list<FriendItem> list = mQun->getMembers(); for(iter = list.begin(); iter!=list.end(); ++iter){ removeList.push_back(iter->getQQ()); } bool ok; QString txt; unsigned int qq; for(int row = 0; row < tblMembers->numRows(); row ++){ txt = tblMembers->text(row, 1); qq = txt.toInt(&ok); if(!ok) return; addList.push_back(qq);printf("qq: %d\n",qq); } printf("addList size: %d\n", addList.size()); std::list<unsigned int>::iterator itr1, itr1_next; std::list<unsigned int>::iterator itr2; for(itr1=addList.begin(); itr1!=addList.end(); ){ itr1_next = itr1;printf("iter1 contents:%d\n", *itr1); ++itr1_next;printf("iter1_next contents:%d\n", *itr1_next); for(itr2=removeList.begin(); itr2!=removeList.end(); ++itr2){ if( (*itr1) == (*itr2)){ addList.remove(*itr1); removeList.remove(*itr2); break; } } itr1 = itr1_next; } printf("remove size:%d\n", removeList.size()); printf("add size:%d\n", addList.size()); numModifications = 0; if(removeList.size()){ numModifications++; emit requestModifyQunMembers(mQun->getQunID(), removeList, false); } if(addList.size()){ numModifications++; emit requestModifyQunMembers(mQun->getQunID(), addList, true); }}void QunDetailsWindow::slotModifyQunMembers( const unsigned int id, const bool ok, QString msg){ if(ok && id != mQun->getQunID()) return; QString title = i18n("Qun Modify Members"); numModifications--; if(ok){ if(numModifications > 0) return; QMessageBox::information(this, title, QString(i18n("Modify Qun members successfully."))); //slotClose( ); } else { QMessageBox::information(this, title, msg); }}void QunDetailsWindow::slotReceivedQunCard( const unsigned int id, const bool ok, const unsigned int qq, QString realName, const unsigned char gender, QString phone, QString email, QString memo, QString msg ){ if(id != mQun->getQunID()) return; m_CardId = qq; leMyName->setText(""); cbbMyGender->setCurrentItem(2); leMyPhone->setText(""); leMyEmail->setText(""); teMyMemo->setText(""); if(ok){ leMyName->setText(realName); leMyName->setReadOnly(true); cbbMyGender->setCurrentItem(gender); cbbMyGender->setEnabled(false); leMyPhone->setText(phone); leMyPhone->setReadOnly(true); leMyEmail->setText(email); leMyEmail->setReadOnly(true); teMyMemo->setText(memo); teMyMemo->setReadOnly(true); }else { leMyName->setText(QString::number(qq)); leMyName->setReadOnly(true); teMyMemo->setText(msg); teMyMemo->setReadOnly(true); } tabWMain->setCurrentPage(3); pbUpdate->setEnabled(true);}void QunDetailsWindow::slotCategoryClicked( ){ QunCategoryPicker *picker = new QunCategoryPicker(this, "categoryPicker",WStyle_Customize | WStyle_Dialog | WStyle_DialogBorder|WDestructiveClose); QObject::connect(picker, SIGNAL(selectCategoryCode(const unsigned short )), SLOT(slotCategorySelected(const unsigned short ))); picker->show();}void QunDetailsWindow::slotCategorySelected( const unsigned short code){ category = code; QunCategory qunCate; QString cateDescription = qunCate.getDescription(category); tbCategory->setText(cateDescription);}void QunDetailsWindow::slotMembersUpdated( const unsigned int id ){ if(id!= mQun->getQunID()) return; slotLoadMembers( );}void QunDetailsWindow::slotUpdateMessageSetting( ){ unsigned char type = Qun::Notify; if(rbRecord_Show->isChecked()) type = Qun::Notify; else if(rbPopupWindow->isChecked()) type = Qun::Popup; else if(rbDisplayNumbers->isChecked()) type = Qun::Numbers; else if(rbRecord_only->isChecked()) type = Qun::RecordOnly; else if(rbRejectMsgs->isChecked()) type = Qun::Reject; emit requestUpdateQunMessageSettings(mQun->getQunID(), type); QMessageBox::information(this, i18n("Qun Setting"), QString(i18n("Message setting updated successfully.")));}#include "qundetailswindow.moc"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -