📄 tables.cpp
字号:
myAccount->num_players++; statusUsers->setText(" P: " + QString::number(myAccount->num_players) + " / " + QString::number(myAccount->num_watchedplayers) + " "); //if (!cmdplayers) // ListView_players->sort() ; } else { // {... has disconnected} bool found = false; for (QListViewItem *lvi; (lvi = lv.current()) && !found;) { lv++; // compare names if (lvi->text(1) == p->name) { // check if it was a watched player if (lvi->text(6) == "W") { qgoif->get_qgo()->playLeaveSound(); myAccount->num_watchedplayers--; } lv++; if (lvi == topViewItem) // are we trying to delete the 'anchor' of the list viewport ? deleted_topViewItem = true ; delete lvi; found = true;; // decrease number of players myAccount->num_players--; statusUsers->setText(" P: " + QString::number(myAccount->num_players) + " / " + QString::number(myAccount->num_watchedplayers) + " "); } } if (!found) qWarning("disconnected player not found: " + p->name); } if (! deleted_topViewItem) //don't try to refer to a deleted element ... { int ip = topViewItem->itemPos(); ListView_players->setContentsPos(0,ip); }}void ClientWindow::slot_addToObservationList(int flag){ if (flag == -1) { if (myAccount->num_observedgames != 0) myAccount->num_observedgames--; } else if (flag == -2) myAccount->num_observedgames++; else myAccount->num_observedgames = flag; // update status bar statusGames->setText(" G: " + QString::number(myAccount->num_games) + " / " + QString::number(myAccount->num_observedgames) + " ");}// get channelinfo: ch nr + peoplevoid ClientWindow::slot_channelinfo(int nr, const QString &txt){ qDebug("slot_channelinfo(): " + txt); QString tipstring; Channel *h; Channel *ch = 0; // check if entering a channel if (txt == QString("*on*")) { switch (myAccount->get_gsname()) { case IGS: sendcommand("channel"); break; default: sendcommand("inchannel " + QString::number(nr), false); break; } return; } else if (txt == QString("*off*")) { // check if channel exists in list bool found = false; for (h = channellist.first(); h != 0 && !found; h = channellist.next()) { // compare numbers if (h->get_nr() == nr) { found = true; channellist.remove(); } } } // check if I'm in given channel bool flag_add; if (txt.contains(myAccount->acc_name) && !txt.contains("Topic:") && !txt.contains("Title:")) flag_add = true; else flag_add = false; // delete string statusChannel->setText(""); // check if channel exists in list bool found = false; for (h = channellist.first(); h != 0 && !found; h = channellist.next()) { // compare numbers if (h->get_nr() == nr) { found = true; ch = h; } } // if not found insert channel at it's sorted position if (!found) { // init channel ch = new Channel(nr); channellist.inSort(ch); } // now insert channel to list if (flag_add) { QString text = txt.simplifyWhiteSpace(); int count = text.contains(" ") + 1; // set user list and user count ch->set_channel(nr, QString(), txt, count); } else if (txt.contains("Topic:") || txt.contains("Title:")) { // set channel's title ch->set_channel(nr, txt); } // reset tooltip QToolTip::remove(statusChannel); // set new tooltip for (h = channellist.first(); h != 0; h = channellist.next()) { if (h->get_users().length() > 2) { // check if users are available; skipped if only title if (tipstring) tipstring += "\n"; tipstring += QString("%1: %2\n%3: %4").arg(h->get_nr()).arg(h->get_title()).arg(h->get_nr()).arg(h->get_users()); if (statusChannel->text().length() > 2) statusChannel->setText(QString("%1 / CH%2:%3").arg(statusChannel->text()).arg(h->get_nr()).arg(h->get_count())); else statusChannel->setText(QString("CH%1:%2").arg(h->get_nr()).arg(h->get_count())); } } QToolTip::add(statusChannel, tipstring);}// user buttonsvoid ClientWindow::slot_pbuser1(){ slot_toolbaractivated(setting->readEntry("USER1_2"));}void ClientWindow::slot_pbuser2(){ slot_toolbaractivated(setting->readEntry("USER2_2"));}void ClientWindow::slot_pbuser3(){ slot_toolbaractivated(setting->readEntry("USER3_2"));}void ClientWindow::slot_pbuser4(){ slot_toolbaractivated(setting->readEntry("USER4_2"));}// tell, say, kibitz...void ClientWindow::slot_message(QString txt, QColor c){ //QColor c0 = MultiLineEdit2->color(); MultiLineEdit2->setColor(c); slot_message( txt); MultiLineEdit2->setColor(Qt::black);} void ClientWindow::slot_message(QString txt){ // Scroll at bottom of text, set cursor to end of line if (MultiLineEdit2->text().endsWith("\n") && txt == "\n") return ; MultiLineEdit2->append(txt);}// shout...void ClientWindow::slot_shout(const QString &player, const QString &txt){ if (getPlayerExcludeListEntry(player) == "X") return; // check if send to a special handle: if (player.length() && player.contains('*')) slot_talk(player, txt, true); else slot_talk("Shouts*", txt, true);}// server name foundvoid ClientWindow::slot_svname(GSName &gs){ // save local at 'gsname' // and change caption myAccount->set_gsname(gs); myAccount->set_caption();}// account name foundvoid ClientWindow::slot_accname(QString &name){ // save local at 'gsname' // and change caption myAccount->set_accname(name); myAccount->set_caption();}// status foundvoid ClientWindow::slot_status(Status s){ myAccount->set_status(s); myAccount->set_caption();}// correct viewportvoid ClientWindow::slot_playerContentsMoving(int /*x*/, int /*y*/){/* QPoint p(0,0); QListViewItem *i = ListView_players->itemAt(p); if (i) { ListView_players->clearSelection(); ListView_players->setSelected(i, true); ListView_players->clearSelection(); } */}// correct viewportvoid ClientWindow::slot_gamesContentsMoving(int /*x*/, int /*y*/){ QPoint p(0,0); QListViewItem *i = ListView_games->itemAt(p); if (i) { ListView_games->clearSelection(); ListView_games->setSelected(i, true); ListView_games->clearSelection(); }}/* * account & caption */Account::Account(QWidget* parent){ // init this->parent = parent; standard.sprintf(PACKAGE + QString("V") + VERSION); set_offline();}Account::~Account(){}// set captionvoid Account::set_caption(){ if ((gsName == GS_UNKNOWN) || (!acc_name)) { // server unknown or no account name // -> standard caption parent->setCaption(standard); } else { if (status == GUEST) parent->setCaption(svname + " - " + acc_name + " (guest)"); else parent->setCaption(svname + " - " + acc_name); }}// set go server namevoid Account::set_gsname(GSName gs){ gsName = gs; // now we know which server switch (gsName) { case IGS: svname.sprintf("IGS"); break; case NNGS: svname.sprintf("NNGS"); break; case LGS: svname.sprintf("LGS"); break; case WING: svname.sprintf("WING"); break; case CTN: svname.sprintf("CTN"); break; case CWS: svname.sprintf("CWS"); break; default: svname.sprintf("unknown Server"); break; } // set account name if (!acc_name) { // acc_name should be set... acc_name.sprintf("Lulu"); qWarning("set_gsname() - acc_name not found!"); } if (status == OFFLINE) status = (enum Status) REGISTERED;}// set account namevoid Account::set_accname(QString &name){ acc_name = name;}// set statusvoid Account::set_status(Status s){ status = s;}// set to offline modevoid Account::set_offline(){ gsName = GS_UNKNOWN; svname = (QString) NULL; acc_name = (QString) NULL; status = OFFLINE; set_caption(); num_players = 0; num_watchedplayers = 0; num_observedgames = 0; num_games = 0;}// get some variablesStatus Account::get_status(){ return status;}GSName Account::get_gsname(){ return gsName;}/* * Host - Class to save Host info */Host::Host(const QString &title, const QString &host, const unsigned int port, const QString &login, const QString &pass, const QString &cod){ t = title; h = host; pt = port; lg = login; pw = pass; cdc = cod;}/* * List to help keeping things sorted */int HostList::compareItems(Item d1, Item d2){ Host *s1 = static_cast<Host*>(d1); Host *s2 = static_cast<Host*>(d2); CHECK_PTR(s1); CHECK_PTR(s2); if (s1 > s2) return 1; else if (s1 < s2) return -1; else // s1 == s2; return 0;}int ChannelList::compareItems(Item d1, Item d2){ Channel *s1 = static_cast<Channel*>(d1); Channel *s2 = static_cast<Channel*>(d2); CHECK_PTR(s1); CHECK_PTR(s2); if (s1 > s2) return 1; else if (s1 < s2) return -1; else // s1 == s2; return 0;}/* * Talk - Class to handle Talk Dialog Windows */int Talk::counter = 0;Talk::Talk(const QString &playername, QWidget * /* parent */, bool isplayer) : TalkGui(){ name = playername; // create a new tab QString s = "MultiLineEdit1_" + QString::number(++counter); MultiLineEdit1->setName(s.ascii()) ; MultiLineEdit1->setCurrentFont(setting->fontComments); s = "LineEdit1_" + QString::number(++counter); LineEdit1->setName(s.ascii()); LineEdit1->setFont(setting->fontComments); // do not add a button for shouts* or channels tab if ( (name.find('*') != -1) || (!isplayer)) { delete pb_releaseTalkTab; delete pb_match; delete stats_layout; } }Talk::~Talk(){}// release current Tabvoid Talk::slot_pbRelTab(){ emit signal_pbRelOneTab(this); }void Talk::slot_returnPressed(){ // read tab QString txt = LineEdit1->text(); emit signal_talkto(name, txt); LineEdit1->clear();}void Talk::slot_match(){ QString txt= name+ " " + stats_rating->text(); emit signal_matchrequest(txt,true);}// write to txt field in dialog// if null string -> check edit fieldvoid Talk::write(const QString &text) const{ QString txt; // check which text to display if (text) // ok, text given txt = text; else if (LineEdit1->text()) { // take txt of edit field txt = LineEdit1->text(); LineEdit1->clear(); } else { // no text found... return; } // Scroll at bottom of text, set cursor to end of line MultiLineEdit1->append(txt); //eb16}void Talk::setTalkWindowColor(QPalette pal){ MultiLineEdit1->setPalette(pal); LineEdit1->setPalette(pal);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -