GUIMainWindow.cpp

IdĽ do dokumentacji tego pliku.
00001 #include <QDateTime>
00002 #include <QLabel>
00003 #include <QMessageBox> 
00004 #include <QDialog>
00005 #include <QFileDialog> 
00006 
00007 #include "GUIMainWindow.h"
00008 #include "exeptions.h"
00009 
00010 GUIMainWindow::GUIMainWindow (QWidget * parent = 0, Qt::WFlags flags = 0) : QWidget (parent)
00011 {
00012         QTextCodec::setCodecForCStrings( QTextCodec::codecForName("Windows-1250") );
00013         QTextCodec::setCodecForTr( QTextCodec::codecForName("Windows-1250"));
00014 
00015         is_connect = false;
00016         Settings = new GUISettings(this);
00017 
00018         if(Settings->getOpacityEnabled())
00019         {
00020                 this->setAutoFillBackground(false);
00021                 this->setAttribute(Qt::WA_NoSystemBackground, false);
00022                 this->setWindowOpacity(Settings->getOpacity());
00023         }
00024 //*******************  Boxs **************************  
00025         QVBoxLayout *vbox = new QVBoxLayout;
00026         vbox->setSpacing(0);
00027         QVBoxLayout *vboxul = new QVBoxLayout;
00028         vboxul->setSpacing(0);
00029         QHBoxLayout *hbox = new QHBoxLayout; 
00030         QVBoxLayout *main = new QVBoxLayout;
00031         main->setMargin(1);
00032 //******************  GUI elements *******************
00033         TextToolBar = new QToolBar("Format", this);
00034         TextToolBar->setMaximumHeight(32);
00035 
00036         ChatTextInput = new GUIChatTextInput(this, TextToolBar,Settings->getFontColor());
00037         ChatTextInput->setMaximumHeight(100);
00038         ChatTextInput->setEnabled(false);
00039 
00040         TabList = new GUITabList(this, Settings->getBroadcast(), Settings->getFontColorSystemMsg().name(),
00041 
00042         Settings->getFontColorSystemUserMsg().name(), Settings->getBackgroundColor().name());
00043 
00044         TabList->publicChat()->chat->printSysMsg(tr("Witamy w programie lanChat"));
00045         TabList->publicChat()->chat->printSysMsg(tr("Wciśnij połącz aby rozpocząć rozmowę"));
00046 
00047         UserList = new GuiActiveUserList(this);
00048         UserList->setMaximumWidth(150);
00049         UserList->setEnabled(false);
00050 
00051         this->setApperance();
00052         connect(Settings, SIGNAL(settingsChanged()),this,SLOT(setApperance()));
00053 
00054         MainToolBar = new QToolBar("Podstawowy", this);
00055         MainToolBar->setMaximumHeight(32);
00056 
00057         createMainToolBar(MainToolBar);
00058 
00059         MainToolBar->setFocus();
00060 
00061         vbox->addWidget(TabList);
00062         vbox->addWidget(TextToolBar);
00063         vbox->addWidget(ChatTextInput);
00064         vboxul->addSpacing(22);
00065         vboxul->addWidget(UserList);
00066         hbox->addLayout(vbox);
00067         hbox->addLayout(vboxul);
00068 
00069         main->addWidget(MainToolBar);
00070         main->addLayout(hbox);
00071 
00072         setLayout(main);
00073         this->setWindowTitle("AvaLANche Chat =)");
00074         this->setWindowIcon(QIcon("icon/Chat/chat.png"));
00075         TextToolBar->setEnabled(false);
00076 
00077         //rozpoczecie prywatnej rozmowy, tylko otwarcie zakladki,
00078         connect (UserList, SIGNAL(signalPrivateChat(QHostAddress &)),this,SLOT(privateChat (QHostAddress &)));
00079 
00080         //odbieranie pliku od kogos tam:
00081         connect (&comm, SIGNAL(fileRequest (QHostAddress , QString , quint32 )), this, SLOT(incomingFile(QHostAddress , QString , quint32 )));
00082 
00083         //wysylanie pliku do usera
00084         connect (UserList, SIGNAL(signalSendFile(QHostAddress &)),this,SLOT(sendFile (QHostAddress &)));
00085 
00086         //Użytkownik po drugiej stronie zakceptowal przyjecie pliku
00087         connect (&comm, SIGNAL(acceptSendFile (QHostAddress, QString)), this, SLOT(acceptSendFile (QHostAddress, QString)));
00088 
00089         //Użytkownik po drugiej stronie odmuwil przyjecie pliku
00090         connect (&comm, SIGNAL(refuseSendFile (QHostAddress , QString)), this, SLOT(refuseSendFile (QHostAddress, QString )));
00091 
00092         //transfer pliku zakoaczył sie
00093         connect (&comm, SIGNAL(transferEnd (QHostAddress, bool)), this, SLOT(transferEnd (QHostAddress, bool)));
00094 
00095         //laczymy transfer plikow z sygnalem
00096         connect (&comm, SIGNAL(fileProgress (int)), this, SLOT(fileProgress (int)));
00097 
00098         //anulowanie odbierania pliku przez usera
00099         connect(&incoming_file_window, SIGNAL(signalCancelFileDownload()), this, SLOT(cancelFileTransfer()));
00100 
00101         //anulowanie wysylanie pliku przez usera
00102         connect(&outcomming_file_window, SIGNAL(signalCancelFileUpload()), this, SLOT(cancelFileTransfer()));
00103 
00104         //wysylanie sprawdzam ip usera
00105         connect (UserList, SIGNAL(signalCheckIp (QHostAddress &)),this,SLOT(checkIp (QHostAddress &)));
00106 
00107         //wysylanie sprawdzam pinga do usera
00108         connect (UserList, SIGNAL(signalCheckPing (QHostAddress &)),this,SLOT(checkPing (QHostAddress &)));
00109 
00110         //wysylanie wiadomosci wpisanej przez usera
00111         connect (ChatTextInput, SIGNAL(sendRequest ()),this,SLOT(sendMsg()));
00112 
00113         //rozlaczenie programu Użytkownik o takej nazwie juz istnieje,
00114         connect (UserList, SIGNAL(disconectChatUserExists()),this,SLOT(disconnectChat()));
00115 
00116         connect (&comm, SIGNAL(newUser(QHostAddress, QString)), this->UserList, SLOT(addUser(QHostAddress, QString)));
00117         connect (&comm, SIGNAL(newUser(QHostAddress, QString)), this, SLOT(setUserOnline(QHostAddress, QString)));
00118         connect (&comm, SIGNAL(leaveUser(QHostAddress)), this->UserList, SLOT(delUser(QHostAddress)));
00119         connect (&comm, SIGNAL(leaveUser(QHostAddress)), this->TabList, SLOT(setUnactiveUser(QHostAddress)));
00120         connect (&comm, SIGNAL(recvPMsg(QHostAddress, QString)), this, SLOT(recvPMsg(QHostAddress,QString)));
00121         connect (&comm, SIGNAL(recvBMsg(QHostAddress, QString)), this, SLOT(recvBMsg(QHostAddress, QString)));
00122         connect (&comm, SIGNAL(pong(QHostAddress, qint32)), this, SLOT(pong(QHostAddress, qint32)));
00123         connect (&comm, SIGNAL(connected()), this, SLOT(connected()));
00124         connect (&comm, SIGNAL(unableConnect()), this, SLOT(unableConnect()));
00125         connect (&comm, SIGNAL(invalidNick()), this, SLOT(invalidNick())); 
00126 
00127         connect (TabList,SIGNAL(tabCanNotBeClose()),this,SLOT(tabCanNotBeClose()));
00128         connect (TabList,SIGNAL(tabCanBeClose()),this,SLOT(tabCanBeClose()));
00129         connect (TabList,SIGNAL(isOnline()),this,SLOT(isOnline()));
00130         connect (TabList,SIGNAL(isNotOnline()),this,SLOT(isNotOnline()));
00131         connect (TabList,SIGNAL(setDisableInputText()),ChatTextInput, SLOT(setEnabled(false)));
00132 }
00133 
00134 void GUIMainWindow::privateChat (QHostAddress &host)
00135 {
00136         TabList->addTab(host,UserList->returnNameUser(host),true,"icon/Chat/user.png");
00137 }
00138 
00139 void GUIMainWindow::sendFile (QHostAddress &host)
00140 {
00141         //jesli klasa nie jest urzywana, tzn mozeymy wyslac tylko jeden plik naraz
00142         if(!(incoming_file_window.isActive()) && !(outcomming_file_window.isActive()) )
00143         {
00144         //plij jest wysylany
00145         is_file_outcoming = 1;
00146                 QString file("");
00147                 file.append( outcomming_file_window.choseFille());
00148                 //jesli wybrano plik, tzn ciagn nie jest pusty
00149                 if( file != "")
00150                 {
00151                         QString msg;
00152                         msg.append(tr("wysyłam plik do usera <b>"));
00153                         msg.append(UserList->returnNameUser(host));
00154                         msg.append("</b> o scieżce: <u>");
00155                         msg.append(file);
00156                         msg.append("</u>");
00157                         TabList->getActiveTab()->chat->printSysMsg(msg);
00158                         try
00159                         {
00160                                 //ustawiam zmeina na aktywna zeby nie mozna bylo wyslac 2 plikow
00161                                 outcomming_file_window.setActive(1);
00162                                 //wywoluje fukcje odpowidzialna za przesyl pliku..
00163                                 comm.sendFile (host, file);
00164                         }
00165                         catch(Exeptions & wyjatek)
00166                         {
00167                                 QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00168                         }
00169                 }
00170                 else
00171                 {
00172                         //jesli Użytkownik nie wybral pliku i wcisnal CANCEL
00173                         QString msg(tr("Rezygnacja z wysłania pliku"));
00174                         TabList->getActiveTab()->chat->printSysMsg(msg);
00175                         //ustawiam zmeina na aktywna zeby nie mozna bylo wyslac 2 plikow
00176                         outcomming_file_window.setActive(0);
00177                 }
00178         }
00179 }
00180 
00181 void GUIMainWindow::acceptSendFile (QHostAddress host, QString file)
00182 {
00183         outcomming_file_window.setActive(1);
00184         QString nick= UserList->returnNameUser(host);
00185         outcomming_file_window.showTransfer(nick, file);
00186         TabList->publicChat()->chat->printSysMsg(tr("Użytkownik zakceptował połączenie"));
00187 }
00188 
00189 void GUIMainWindow::refuseSendFile (QHostAddress host, QString file)
00190 {
00191         QString msg;
00192         msg.append(tr(" Użytkownik <b>"));
00193         msg.append(this->UserList->returnNameUser(host));
00194         msg.append(tr("</b> odmówił przyjęcia pliku: <u>"));
00195         msg.append(file);
00196         msg.append("</u>");
00197 
00198         QMessageBox::warning(this,QString(tr("Niepowodzenie w przesyłaniu pliku")),msg);
00199         outcomming_file_window.setActive(0);
00200 }
00201 
00202 void GUIMainWindow::checkIp (QHostAddress &host)
00203 {
00204         QString msg;
00205         msg.append(tr("użytkownik: <b>"));
00206         msg.append(this->UserList->returnNameUser(host));
00207         msg.append(tr("</b> posiada IP: <u>"));
00208         msg.append(host.toString());
00209         msg.append("</u>");
00210         TabList->getActiveTab()->chat->printUserMsg(msg);
00211 }
00212 
00213 void GUIMainWindow::checkPing (QHostAddress &host)
00214 {
00215         TabList->getActiveTab()->chat->printUserMsg(tr("Sprawdzam ping do użytkownika <b>") + userName(host) + "</b>");
00216         try
00217         {
00218                 comm.checkPing(host);
00219         }
00220         catch(Exeptions & wyjatek)
00221         {
00222                 QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00223         }
00224 }
00225 
00226 void GUIMainWindow::pong(QHostAddress ip, qint32 time)
00227 {
00228         QString msg;
00229         msg.append(tr("ping do użytkownika <b>"));
00230         msg.append(this->UserList->returnNameUser(ip));
00231         if (time == -1)
00232         {
00233                 msg.append(" </b> <u> ");
00234                 msg.append(tr("użytkownik nie odpowiada !!"));
00235                 msg.append(" </u>");
00236         }
00237         else
00238         {
00239                 msg.append(tr("</b> wynosi: <u>"));
00240                 msg.append(QString::number(time)+tr("msek"));
00241                 msg.append("</u>");
00242         }
00243         TabList->getActiveTab()->chat->printUserMsg(msg);
00244 }
00245 
00246 void GUIMainWindow::invalidNick()
00247 {
00248         QMessageBox::warning(this,QString(tr("Wyjątek:")),tr("Nick jest już zajęty, zmnień nick!!"));
00249         disconnectChat();
00250 }
00251 
00252 void GUIMainWindow::recvPMsg (QHostAddress host, QString msg)
00253 {
00254         int tab_is_create = TabList->isCreate(host); //0 jesli istnieje zwroci nr zakladki, jesli nie istnieje 0
00255         int current_index = TabList->currentIndex(); //dotychczas otwarta zakladka
00256         QString mesage, user_name;
00257         user_name = this->userName(host);
00258 
00259         mesage.append(this->time());
00260         mesage.append("&nbsp;<b> ");
00261         mesage.append(user_name);
00262         mesage.append("</b> ");
00263         mesage.append(msg);
00264         mesage.append("<br>");
00265         if(!tab_is_create)
00266         {
00267                 TabList->addTab(host,user_name,true,"icon/Chat/chat.png");
00268                 TabList->setTabTextColor(TabList->currentIndex());
00269                 TabList->setTabIcon(TabList->currentIndex(),QIcon("icon/Chat/chat.png"));
00270                 TabList->getActiveTab()->chat->append(mesage);
00271                 TabList->setCurrentIndex(current_index);
00272         }
00273         else
00274         {
00275                 if(TabList->getTabNumber(host) != TabList->currentIndex())
00276                 {
00277                 TabList->setTabTextColor(tab_is_create);
00278                 TabList->setTabIcon(tab_is_create,QIcon("icon/Chat/chat.png"));
00279         }
00280                 TabList->tab(tab_is_create)->chat->append(mesage);
00281         }
00282 }
00283 
00284 void GUIMainWindow::connectChat ()
00285 {
00286         TabList->publicChat()->chat->printSysMsg(tr("Trwa próba połączenia..."));
00287         try
00288         {
00289                 connect_buton->setEnabled(false);
00290                 comm.welcome (Settings->getNick(), Settings->getBroadcast(),Settings->getPort());
00291         }
00292         catch(Exeptions & wyjatek)
00293         {
00294                 QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00295         }
00296 }
00297 
00298 void GUIMainWindow::connected()
00299 {
00300         TabList->publicChat()->chat->printSysMsg(tr("Program połączony"));
00301         disconnect(connect_buton, SIGNAL(triggered()), this, SLOT(connectChat()));
00302         connect_buton->setToolTip(tr("Rozłącz"));
00303         connect_buton->setIcon(QIcon("icon/MainToolBar/disconnect.png"));
00304         connect(connect_buton, SIGNAL(triggered()), this, SLOT(disconnectChat()));
00305 
00306         UserList->setEnabled(true);
00307         connect_buton->setEnabled(true);
00308         TextToolBar->setEnabled(true);
00309         ChatTextInput->setEnabled(true);
00310 
00311         is_connect = true;
00312 
00313         UserList->setMyNick(Settings->getNick());
00314         outcomming_file_window.setDir(Settings->getFileStoragePath());
00315         incoming_file_window.setDir(Settings->getFileStoragePath());
00316 }
00317 
00318 void GUIMainWindow::unableConnect()
00319 {
00320         TabList->publicChat()->chat->printSysMsg(tr("Nie udało sie połączyć"));
00321         connect_buton->setEnabled(true);
00322 
00323         QMessageBox::warning(this,QString("Błąd"),
00324 
00325         tr("Próba połączenia zakończona <b>niepowodzeniem</b><br> Sprawdź:<br>- czy adress broadcast jest poprawny<br>"
00326         "- ustawienia zapory ogniowej<br>"
00327         "- czy komputer jest podpięty do sieci"
00328         "- czy połączenie sieciowe jest włączone"));
00329 }
00330 
00331 void GUIMainWindow::disconnectChat ()
00332 {
00333         TabList->publicChat()->chat->printSysMsg(tr("Program rozłączony"));
00334         disconnect(connect_buton, SIGNAL(triggered()), this, SLOT(disconnectChat()));
00335         connect_buton->setToolTip(tr("Połącz"));
00336         connect_buton->setIcon(QIcon("icon/MainToolBar/connect.png"));
00337         connect(connect_buton, SIGNAL(triggered()), this, SLOT(connectChat()));
00338         try
00339         {
00340                 comm.bye ();
00341         }
00342         catch(Exeptions & wyjatek)
00343         {
00344                 QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00345         }
00346         UserList->clearAllUsers();
00347         UserList->setEnabled(false);
00348         TextToolBar->setEnabled(false);
00349         ChatTextInput->setEnabled(false);
00350         TabList->closeAllPrivChat();
00351 
00352         is_connect = false;
00353 }
00354 
00355 void GUIMainWindow::recvBMsg (QHostAddress host, QString msg)
00356 {
00357         QString message;
00358         message.append(this->time());
00359         message.append("<b>&nbsp;");
00360         message.append(userName(host));
00361         message.append("</b><br>");
00362         message.append(msg);
00363 
00364         TabList->publicChat()->chat->append(message);
00365         TabList->setTabTextColor(0);
00366         TabList->setTabIcon(0,QIcon("icon/Chat/chat.png"));
00367 }
00368 
00369 void GUIMainWindow::sendMsg()
00370 {
00371         if(this->ChatTextInput->toPlainText().size())
00372         {
00373                 if((is_connect == true) && (TabList->getActiveTab()->getOnline() == true))
00374                 {
00375                         QString msg;
00376                         msg.append(this->time());
00377                         msg.append("<b>");
00378                         msg.append("&nbsp;");
00379                         msg.append(Settings->getNick());
00380                         msg.append("&nbsp;</b><br>");
00381                         msg.append("</td></tr><tr><td>");
00382                         msg.append(this->ChatTextInput->toHtml());
00383         
00384                         TabList->getActiveTab()->chat->printChatText(msg);
00385                         if(TabList->getActiveTab()->getIp() == Settings->getBroadcast())        
00386                         {
00387                                 try
00388                                 {
00389                                         comm.sendBMsg (this->ChatTextInput->toHtml());
00390                                 }
00391                                 catch(Exeptions & wyjatek)
00392                                 {
00393                                         QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00394                                 }
00395                         }
00396                         else
00397                         {
00398                                 try
00399                                 {
00400                                         comm.sendPMsg (TabList->getActiveTab()->getIp(), this->ChatTextInput->toHtml());
00401                                 }
00402                                 catch(Exeptions & wyjatek)
00403                                 {
00404                                         QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00405                                 }
00406                         }
00407                 }
00408                 this->ChatTextInput->clear ();
00409         }
00410 
00411 }
00412 
00413 void GUIMainWindow::createMainToolBar(QToolBar *tool_bar)
00414 {
00415         QAction *a;
00416         //polaczenie - rozlaczenie
00417         connect_buton = new QAction(QIcon("icon/MainToolBar/connect.png"), tr("Polacz"),tool_bar);
00418         connect(connect_buton, SIGNAL(triggered()), this, SLOT(connectChat())); 
00419         tool_bar->addAction(connect_buton);
00420 
00421         //settings      
00422         a= new QAction(QIcon("icon/MainToolBar/configure.png"), tr("Ustawienia"),tool_bar);
00423         connect(a, SIGNAL(triggered()), this, SLOT(configureChat()));   
00424         tool_bar->addAction(a);
00425         //clear page
00426 
00427         a= new QAction(QIcon("icon/MainToolBar/clear.png"), tr("Czyść okno wiadomości"),tool_bar);
00428         connect(a, SIGNAL(triggered()),this, SLOT(clearActiveChatPage()));      
00429         tool_bar->addAction(a);
00430 
00431         //close active tab
00432         close_active_tab_buton= new QAction(QIcon("icon/MainToolBar/close_page_active.png"), tr("Zamknij zakładkę"),tool_bar);
00433 
00434         connect(close_active_tab_buton, SIGNAL(triggered()), TabList, SLOT(closeActiveTab()));  
00435 
00436         tool_bar->addAction(close_active_tab_buton);
00437 
00438         close_active_tab_buton->setEnabled(false);
00439         tool_bar->addSeparator();
00440         a= new QAction(QIcon("icon/MainToolBar/help.png"), tr("O programie"),tool_bar);
00441         a->setShortcut(Qt::Key_F1);
00442         connect(a, SIGNAL(triggered()),this, SLOT(about()));
00443         tool_bar->addAction(a);
00444 
00445 }
00446 
00447 void GUIMainWindow::about()
00448 {
00449         QDialog aboutProgram;
00450         aboutProgram.setWindowOpacity(0.95);
00451         aboutProgram.setWindowTitle("lanChat ver. 1.0");
00452                 
00453         QPalette pal = aboutProgram.palette();
00454         pal.setColor(QPalette::Window, Qt::white);
00455         aboutProgram.setPalette(pal);
00456         
00457         QString about;
00458         about.append("<TABLE>");
00459         about.append("<TR><TD><h3>Autorzy:</h3></TD></TR>");
00460         about.append("<TR><TD></TD></TR>");
00461         about.append("<TR><TD><b>GJMP:</b></TD><TD>   <font color=#0055FF>gjmp@o2.pl </font><br></TD></TR>");
00462         about.append("<TR><TD><b>luik:</b></TD><TD>   <font color=#0055FF>luik@bielawa.info </font><br></TD></TR>");
00463         about.append("<TR><TD><b>n0rn:</b></TD><TD>   <font color=#0055FF>n0rn@tlen.pl </font><br></TD></TR>");
00464         about.append("<TR><TD><b>PeBek:</b></TD><TD>  <font color=#0055FF>pebek.tux@gmail.com </font><br></TD></TR>");
00465         about.append("<TR><TD><b>PKW:</b></TD><TD>    <font color=#0055FF>pkw@vitea.pl </font><br></TD></TR>");
00466         about.append("</TABLE>");
00467         about.append("<TABLE>");
00468         about.append("<TR><TD><h3> Strona internetowa </h3></TD></TR>");
00469         about.append("<TR><TD><font color=#0055FF><a>http://avalanche-chat.sourceforge.net<a></font></TD></TR>");
00470         about.append("</TABLE>");       
00471         
00472         QHBoxLayout *main = new QHBoxLayout;
00473         
00474         QVBoxLayout *picture = new QVBoxLayout;
00475         QPixmap *logo = new QPixmap("icon/logoMini.png");
00476         QLabel *pixmapLabel = new QLabel;
00477         pixmapLabel->setPixmap(*logo);
00478         QLabel *authors = new QLabel;
00479         authors->setText(about);
00480         
00481         picture->addWidget(pixmapLabel);
00482         picture->addStretch(1);
00483         main->addLayout(picture);
00484         main->addWidget(authors);
00485         aboutProgram.setLayout(main);
00486         
00487         aboutProgram.exec();    
00488         
00489 }
00490 
00491 
00492 
00493 
00494 
00495 
00496 void GUIMainWindow::cancelFileTransfer()
00497 
00498 {
00499         //przerwanie transferu
00500         try
00501         {
00502                 if(is_file_outcoming)
00503                 {
00504                         comm.cancelTranfer ();
00505                         outcomming_file_window.setActive(0);
00506                 }
00507                 else
00508                 {
00509                         comm.cancelTranfer ();
00510                         incoming_file_window.setActive(0);
00511                 }
00512         }
00513         catch(Exeptions & wyjatek)
00514         {
00515                 QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00516         }
00517         TabList->getActiveTab()->chat->printSysMsg(tr(" <b>Przerwano transfer plików</b>"));
00518 }
00519 
00520 void GUIMainWindow::incomingFile(QHostAddress host, QString file, quint32 size)
00521 {
00522         //jesli klasa juz jest aktywna
00523         if(!(incoming_file_window.isActive()) && !(outcomming_file_window.isActive()) )
00524         {
00525                 //plij jest odbierany
00526                 is_file_outcoming = 0;
00527                 QString nick(this->UserList->returnNameUser(host));
00528                 if( incoming_file_window.showWindowQuestion(nick, file) )
00529                 {
00530                         //ustawiam zmiena klasy na aktywana zeby nie mozna bylo odbierac wiecej niz jeden plik
00531                         incoming_file_window.setActive(1);
00532                         QString file_to_save("");
00533                         file_to_save.append( incoming_file_window.saveFille(file));
00534                         //jelsi wybrany plik nie jest pusty
00535                         if( file_to_save != "")
00536                         {
00537                                 //odbieramy tenze plik
00538                                 try
00539                                 {
00540                                         //wysylam potwierdzenei odbioru pliku
00541                                         comm.acceptFileRequest (host, file_to_save);
00542                                 }
00543                                 catch(Exeptions & wyjatek)
00544                                 {
00545                                         QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00546                                 }
00547                                 
00548                                 TabList->getActiveTab()->chat->append(tr("Zapisuje plik jako: <b>"));
00549                                 TabList->getActiveTab()->chat->append(file_to_save);
00550                                 incoming_file_window.showTransfer(nick, file_to_save);
00551                         }
00552                         else
00553                         {
00554                                 TabList->getActiveTab()->chat->printSysMsg(tr("Odmowa przyjęcia pliku"));
00555                                 try
00556                                 {
00557                                         //jeśli nie chemy przyjąc pliku
00558                                         comm.refuseFileRequest (host);
00559                                         //klasa ustawiam na deaktywna
00560                                         incoming_file_window.setActive(0);
00561                                 }
00562                                 catch(Exeptions & wyjatek)
00563                                 {
00564                                         QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00565                                 }
00566                         }
00567                 }
00568                 else
00569                 {
00570                         TabList->getActiveTab()->chat->printSysMsg(tr("Odmowa przyjęcia pliku"));
00571                         try
00572                         {
00573                                 //jesli nie chemy przyjac pliku
00574                                 comm.refuseFileRequest (host);
00575                                 //klasa ustawiam na deaktywna
00576                                 incoming_file_window.setActive(0);
00577                         }
00578                         catch(Exeptions & wyjatek)
00579                         {
00580                                 QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00581                         }
00582                 }
00583         }
00584 }
00585 
00586 
00587 
00588 void GUIMainWindow::transferEnd (QHostAddress host, bool czy_ok)
00589 
00590 {
00591         if(is_file_outcoming)
00592         {
00593                 outcomming_file_window.upgradeTransfer(100);
00594                 outcomming_file_window.setActive(0);
00595         }
00596         else
00597         {
00598                 incoming_file_window.upgradeTransfer(100);
00599                 incoming_file_window.setActive(0);
00600         }
00601         if(czy_ok)
00602         {
00603                 TabList->getActiveTab()->chat->printSysMsg(tr("Transfer pliku zakończył się powodzeniem"));
00604         }
00605         else
00606         {
00607                 TabList->getActiveTab()->chat->printSysMsg(tr("Transfer pliku zakończył się <b> NIEPOWODZENIEM </b>"));
00608         }
00609 }
00610 
00611 void GUIMainWindow::fileProgress (int procent)
00612 {
00613         if(is_file_outcoming)
00614         {
00615                 outcomming_file_window.upgradeTransfer(procent);
00616         }
00617         else
00618         {
00619                 incoming_file_window.upgradeTransfer(procent);
00620         }
00621 }
00622 
00623 void GUIMainWindow::configureChat()
00624 {
00625          Settings->exec();
00626 }
00627 
00628 void GUIMainWindow::tabCanNotBeClose()
00629 {
00630         close_active_tab_buton->setEnabled(false);
00631 }
00632 
00633 void GUIMainWindow::tabCanBeClose()
00634 {
00635         close_active_tab_buton->setEnabled(true);
00636 }
00637 
00638 void GUIMainWindow::isOnline()
00639 {
00640         if(is_connect)
00641         ChatTextInput->setEnabled(true);
00642 }
00643 
00644 void GUIMainWindow::isNotOnline()
00645 {
00646         ChatTextInput->setEnabled(false);
00647 }
00648 
00649 void GUIMainWindow::setUserOnline(QHostAddress host, QString msg)
00650 {
00651         if(TabList->isCreate(host))
00652         {
00653                 TabList->tab(TabList->getTabNumber(host))->setOnline(true);
00654                 TabList->setTabIcon(TabList->getTabNumber(host),QIcon("icon/Chat/user.png"));
00655                 TabList->setTabTextColor(TabList->getTabNumber(host), Qt::black);
00656                 if(TabList->getTabNumber(host) == TabList->currentIndex())
00657                 {
00658                         ChatTextInput->setEnabled(true);
00659             }
00660         }
00661 }
00662 
00663 QString GUIMainWindow::time()
00664 {
00665         QString msg;
00666         msg.append("<font color=\"blue\">");
00667         msg.append(QTime::currentTime().toString());
00668         msg.append("</font>");
00669         return msg;
00670 }
00671 
00672 QString GUIMainWindow::userName(QHostAddress host)
00673 {
00674         QString user_name;
00675         if((user_name = this->UserList->returnNameUser(host)) != "")
00676         {
00677                 return user_name;
00678         }
00679         else
00680         {
00681                 return host.toString();
00682         }
00683 }
00684 
00685 void GUIMainWindow::clearActiveChatPage()
00686 {
00687         TabList->getActiveTab()->chat->clear();
00688 }
00689 
00690 void GUIMainWindow::setApperance()
00691 {
00692         QPalette tmp;
00693         tmp = ChatTextInput->palette();
00694         tmp.setColor(QPalette::Base,Settings->getBackgroundColor());
00695         ChatTextInput->setPalette(tmp);
00696         ChatTextInput->setDefFontColor(Settings->getFontColor());
00697         ChatTextInput->setTextColor(Settings->getFontColor());
00698         tmp = UserList->palette();
00699         tmp.setColor(QPalette::Base,Settings->getBackgroundColor());
00700         tmp.setColor(QPalette::Text,Settings->getFontColor());
00701         UserList->setPalette(tmp);
00702         tmp = TabList->palette();
00703         tmp.setColor(QPalette::Base,Settings->getBackgroundColor());
00704         tmp.setColor(QPalette::Text,Settings->getFontColor());
00705         TabList->setPalette(tmp);
00706         if(Settings->getOpacityEnabled())
00707         {
00708                 this->setAutoFillBackground(false);
00709                 this->setAttribute(Qt::WA_NoSystemBackground, false);
00710                 this->setWindowOpacity(Settings->getOpacity());
00711         }
00712         else
00713         {
00714                 this->setWindowOpacity(1.0);
00715         }
00716         if(is_connect)
00717         {
00718                 this->disconnectChat();
00719                 this->connectChat();
00720         }
00721 }
00722 
00723 void GUIMainWindow::closeEvent(QCloseEvent *e)
00724 {
00725    if(is_connect)     
00726         try
00727         {
00728                 comm.bye();
00729         }
00730         catch(Exeptions & wyjatek)
00731         {
00732                         QMessageBox::warning(this,QString(tr("Wyjątek:")),wyjatek.getErrorMessage());
00733         }
00734         e->accept();
00735 }
00736 

Wygenerowano Sun Jun 11 12:55:08 2006 dla lanChat programem  doxygen 1.4.6