📄 evasearchwindow.cpp
字号:
case B_CUSTOM:{ m_Id = leQQNum->text().stripWhiteSpace(); m_Nick = leNickName->text().stripWhiteSpace(); //m_Email = leEmail->text().stripWhiteSpace(); processBasicSearch(false, m_Id, m_Nick, m_Email); } break; case B_FRDCENTER:{ QStringList args; args<<"exec"<< "http://love.qq.com/"; kapp->kdeinitExec("kfmclient",args); } break; } }else{ //we are now on the search result page, click the button means send a auth request message //to selected user. the auth dialog should called here if(m_SelectedBasicUser.getQQ() == 0){ KMessageBox::messageBox((QWidget *) 0,KMessageBox::Information, i18n("Please select a user."), i18n("Eva - Search/Add")); return; } EvaMain::g_AddingManager->slotAddBuddy(m_SelectedBasicUser.getQQ(), codec->toUnicode(m_SelectedBasicUser.getNick().c_str()), m_SelectedBasicUser.getFace()); close(); } break; case 1: if(!strcmp(wsAdvancedSearch->visibleWidget()->name(),"wsASPage")){ m_OnlineUser = chbOnlineUsers->isChecked(); m_HasCam = chbHaveCamera->isChecked(); m_ProvinceIndex = cbASProvince->currentItem(); m_CityIndex = cbASCity->currentItem(); m_AgeIndex = cbASAge->currentItem(); m_GenderIndex = cbASSex->currentItem(); processAdvancedSearch(m_OnlineUser, m_HasCam, m_ProvinceIndex, m_CityIndex, m_AgeIndex, m_GenderIndex); }else{ //we are now on the advanced search result page, click the button means send a auth request//message to selected user. the auth dialog should called here if(m_SelectedAdvancedUser.getQQ() == 0){ KMessageBox::messageBox((QWidget *) 0,KMessageBox::Information, i18n("Please select a user."), i18n("Eva - Search/Add")); return; } EvaMain::g_AddingManager->slotAddBuddy(m_SelectedAdvancedUser.getQQ(), codec->toUnicode(m_SelectedAdvancedUser.getNick().c_str()), m_SelectedAdvancedUser.getFace()); close(); } break; case 2: if(!strcmp(wsQunSearch->visibleWidget()->name(),"wsQSPage")){ //the same to above switch(m_QSearchType){ case Q_ALUMNI:{ QStringList args; args<<"exec"<< "http://school.qq.com/"; kapp->kdeinitExec("kfmclient",args); } break; case Q_CATEGORY:{ QStringList args; args << "exec" << "http://jump.qq.com/clienturl_simp_18"; kapp->kdeinitExec("kfmclient",args); //QString url = "http://group.qq.com/cgi-bin/group_classify?catalog="+QString::number(getCategoryCode()); //KRun::runCommand("konqueror \""+url+"\""); } break; case Q_ACCURATE:{ m_QunNum = leQunNum->text().stripWhiteSpace(); processQunSearch(m_QunNum); } break; } }else{ //the same to above //we are now on the search result page, click the button means send a auth request message //to selected user. the auth dialog should called here if(m_SelectedQun.getQunID() == 0){ KMessageBox::messageBox((QWidget *) 0,KMessageBox::Information, i18n("Please select a Qun."), i18n("Eva - Search/Add")); return; } //emit requestJoinQun(m_SelectedQun); EvaMain::g_AddingManager->slotAddQun(m_SelectedQun); close(); } break; } }void EvaSearchWindow::processBasicSearch(const bool isSearchAll, const QString id, const QString nick, const QString email){ tbBSPrev->setEnabled(false); tbBSNext->setEnabled(false); tbBSDetails->setEnabled(false); tbBSAll->setEnabled(false); lblBSResultTip->setText(i18n("Eva is searching users for you...")); m_BCurrentPage = 0; m_ShowAllBasicUsers = false; m_BasicUserPages.clear();//clear because click here aways means re-search m_SelectedBasicUser.setQQ(0); tbBSResult->setNumRows(0); //clear the result for(int row=0; row<tbBSResult->numRows(); row++){ for(int col=0; col<tbBSResult->numCols(); col++){ tbBSResult->clearCell(row, col); } } if(isSearchAll){ pbSearch->setText(i18n("Add Buddy")); pbLastStep->setHidden(false); wsBasicSearch->raiseWidget(1); emit requestSearchUsers(true, "0", "", "", "", false);//request the first page of online users } else{ if(id.isEmpty() && nick.isEmpty() && email.isEmpty()){ KMessageBox::messageBox((QWidget *) 0,KMessageBox::Information, i18n("Search conditions can not be empty."), i18n("Eva - Search/Add")); leQQNum->setFocus(); return; } bool ok; m_Id.toInt(&ok); if(!ok && !m_Id.isEmpty()){ KMessageBox::messageBox((QWidget *) 0,KMessageBox::Information, i18n("QQ number is incorrect."), i18n("Eva - Search/Add")); leQQNum->setFocus(); return; } pbSearch->setText(i18n("Add Buddy")); pbLastStep->setHidden(false); wsBasicSearch->raiseWidget(1); emit requestSearchUsers(false, "0", id, nick, email, true);//request the first page of precise online users } }void EvaSearchWindow::slotPbLastStepClicked(){ //there's no need to find which page we are, because the"last step" button is only on the search result page switch(twSearchMain->currentPageIndex()){ case 0://basic search switch(m_BSearchType){ case B_ONLINE:{ pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); wsBasicSearch->raiseWidget(0); } break; case B_CUSTOM:{ pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); wsBasicSearch->raiseWidget(0); } break; case B_FRDCENTER:{ } break; } break; case 1://advance search pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); wsAdvancedSearch->raiseWidget(0); break; case 2://qun search switch(m_QSearchType){ case Q_ALUMNI:{ } break; case Q_CATEGORY:{ } break; case Q_ACCURATE:{ pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); wsQunSearch->raiseWidget(0); } break; } break; }}void EvaSearchWindow::slotCurrentChanged(QWidget* wCurrentPage){ if(!strcmp(wCurrentPage->name(), "tabBasicSearch")){ if(!strcmp(wsBasicSearch->visibleWidget()->name(),"wsBSPage")){ pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); } else{ pbSearch->setText(i18n("Add Buddy")); pbLastStep->setHidden(false); } } if(!strcmp(wCurrentPage->name(), "tabAdvancedSearch")){ if(!strcmp(wsAdvancedSearch->visibleWidget()->name(),"wsASPage")){ pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); } else{ pbSearch->setText(i18n("Add Buddy")); pbLastStep->setHidden(false); } } if(!strcmp(wCurrentPage->name(), "tabQunSearch")){ if(!strcmp(wsQunSearch->visibleWidget()->name(),"wsQSPage")){ pbSearch->setText(i18n("Search")); pbLastStep->setHidden(true); } else{ pbSearch->setText(i18n("Join Qun")); pbLastStep->setHidden(false); } }}void EvaSearchWindow::slotSearchUsersReady(const bool finished, const std::list<OnlineUser> list){ lblBSResultTip->setText(i18n("the following users are found for you by Eva.")); std::map<int, std::list<OnlineUser> >::iterator iter = m_BasicUserPages.find(m_BCurrentPage); if( iter != m_BasicUserPages.end()) return ; m_BasicUserPages[m_BCurrentPage] = list; m_BSearchFinished = finished; displayBasicUsers();}void EvaSearchWindow::displayBasicUsers(){ //clear the reuslt table of basic search for(int row=0; row<tbBSResult->numRows(); row++){ for(int col=0; col<tbBSResult->numCols(); col++){ tbBSResult->clearCell(row, col); } } tbBSResult->setNumRows(0); int start=0, end=1; if(m_ShowAllBasicUsers){ end = m_BasicUserPages.size(); }else{ start = m_BCurrentPage; end = start+1; } std::list<OnlineUser>::iterator iter; QTextCodec *codec = QTextCodec::codecForName("GB18030"); for(int i=start; i<end; i++){ for(iter = m_BasicUserPages[i].begin(); iter!=m_BasicUserPages[i].end(); ++iter){ tbBSResult->setNumRows(tbBSResult->numRows()+1); QImage img = images->getFace(images->getFaceFileIndex(iter->getFace()),true)->convertToImage(); tbBSResult->setPixmap(tbBSResult->numRows()-1, 0, QPixmap(img.smoothScale(16,16))); tbBSResult->setText(tbBSResult->numRows()-1, 0, QString::number(iter->getQQ())); tbBSResult->setText(tbBSResult->numRows()-1, 1,codec->toUnicode(iter->getNick().c_str())); tbBSResult->setText(tbBSResult->numRows()-1, 2,codec->toUnicode(iter->getProvince().c_str())); } } tbBSPrev->setEnabled(m_BCurrentPage==0?false:true); tbBSNext->setEnabled(m_BSearchFinished?false:true); tbBSDetails->setEnabled(true); tbBSAll->setEnabled(true); lblBSResultPage->setText(QString(i18n("Current page %1 ")).arg(m_BCurrentPage+1)); }void EvaSearchWindow::slotTbBSNextClicked(){ m_BCurrentPage++; m_ShowAllBasicUsers = false; if((m_BCurrentPage+1)>m_BasicUserPages.size()){ tbBSNext->setEnabled(false); tbBSPrev->setEnabled(false); tbBSDetails->setEnabled(false); tbBSAll->setEnabled(false); lblBSResultTip->setText(i18n("Eva is searching users for you...")); QString pageNo = QString::number(m_BCurrentPage); if(m_BSearchType == B_ONLINE){ emit requestSearchUsers(true, pageNo, "", "", "", false); }else{ //send precise search request emit requestSearchUsers(false, pageNo, m_Id, m_Nick, m_Email, false); } }else{ displayBasicUsers(); }}void EvaSearchWindow::slotTbBSPrevClicked(){ m_BCurrentPage--; m_ShowAllBasicUsers = false; displayBasicUsers();}void EvaSearchWindow::slotTbBSAllClicked(){ m_ShowAllBasicUsers = true; displayBasicUsers();}void EvaSearchWindow::slotBasicUserSelected(int row){ int start = 0, end = 1 ,count = 0; if(m_ShowAllBasicUsers){ end = m_BasicUserPages.size(); }else{ start = m_BCurrentPage; end = start+1; } std::list<OnlineUser>::iterator iter; for(int i=start; i<end; i++){ for(iter = m_BasicUserPages[i].begin(); iter!=m_BasicUserPages[i].end(); ++iter){ if(count == row){ m_SelectedBasicUser = *iter; return; }else count++; } } }void EvaSearchWindow::slotTbBSDetailsClicked(){ //if user click the "details" button without any selected item, then show the message box if(tbBSResult->numRows()!=0 && m_SelectedBasicUser.getQQ() == 0){ KMessageBox::messageBox((QWidget *) 0,KMessageBox::Information, i18n("Please select a user."),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -