00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "Qt.h"
00024 #include "MainWindow.h"
00025 #include "UIs/Searching/SearchingWidget.h"
00026 #include "UIs/Searching/SearchTreeView.h"
00027 #include "UIs/Searching/SearchTab.h"
00028 #include "UIs/TransferTreeView.h"
00029 #include "UIs/TransferTab.h"
00030 #include "UIs/PacketDumpTreeView.h"
00031 #include "Gnutella/LocalPeer.h"
00032 #include "PacketModel.h"
00033
00034 using UIs::Searching::SearchTreeView;
00035 using UIs::Searching::SearchTab;
00036 using UIs::MenuBar;
00037 using UIs::NetworkTreeView;
00038 using UIs::PacketDumpTreeView;
00039
00040 NetworkTreeView *networkTreeView;
00041
00042 MainWindow::MainWindow(QWidget *parent)
00043 : QMainWindow (parent, Qt::Window),
00044 menuBar (0), newSearchButton (0), downloadButton (0), tabWidget (0),
00045 peerIpAddress (0), peerPort (0), connectButton (0), packetTreeView (0),
00046 localPeer (0), newtorkTab (0), searchingResultsTab (0)
00047 {
00048 newSearchButton = new QPushButton ("New Search");
00049 newSearchButton->setIcon (QIcon ("Icons/search.png"));
00050 downloadButton = new QPushButton ("Download");
00051 downloadButton->setIcon( QIcon("Icons/download.png"));
00052 tabWidget = new QTabWidget();
00053 searchingResultsTab = new SearchingWidget();
00054
00055 menuBar = static_cast <QMenuBar*> (new MenuBar());
00056
00057 setMenuBar (menuBar);
00058 initializeMenuBar ();
00059 localPeer = new LocalPeer();
00060
00061 peerIpAddress = new QLineEdit("localhost");
00062 peerPort = new QLineEdit("6467");
00063 connectButton = new QPushButton(tr("Connect"));
00064 connectButton->setDefault(true);
00065 connect (connectButton, SIGNAL(clicked()), this, SLOT(connectToPeer()));
00066
00067 QHBoxLayout *connectLayout = new QHBoxLayout();
00068 connectLayout->setMargin (0);
00069 connectLayout->addWidget (peerIpAddress);
00070 connectLayout->addWidget (peerPort);
00071 connectLayout->addWidget (connectButton);
00072
00073 localPeer->setServerPort (4404);
00074 localPeer->connectToNetwork();
00075
00076
00077 QTimer *timer = new QTimer();
00078 timer->setInterval(1000);
00079 QObject::connect(timer, SIGNAL(timeout()), this, SLOT(updateTime()));
00080 timer->start();
00081
00082
00083 networkTreeView = new NetworkTreeView (this);
00084 newtorkTab = new NetworkTab(networkTreeView, localPeer->nodeModel());
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 int index = tabWidget->addTab (newtorkTab, "Network");
00106 tabWidget->setTabIcon(index, QIcon("Icons/network.png"));
00107
00108
00109 tabWidget->setTabShape (QTabWidget::Rounded);
00110
00111 QObject::connect (newSearchButton, SIGNAL(pressed()), this, SLOT(newSearchButtonPressed(void)));
00112 QObject::connect (downloadButton, SIGNAL(pressed()), this, SLOT(downloadButtonPressed(void)));
00113
00114
00115
00116
00117
00118
00119 QHBoxLayout *buttonLayout = new QHBoxLayout ();
00120 buttonLayout->addStretch (0);
00121 buttonLayout->addWidget (newSearchButton);
00122 buttonLayout->addStretch (0);
00123 buttonLayout->addWidget (downloadButton);
00124 buttonLayout->addStretch (100);
00125
00126 QVBoxLayout *mainLayout = new QVBoxLayout();
00127
00128
00129 mainLayout->addLayout (connectLayout);
00130 mainLayout->addWidget (tabWidget);
00131
00132
00133
00134 QWidget *mainWidget = new QWidget();
00135 mainWidget->setLayout (mainLayout);
00136
00137 setCentralWidget (mainWidget);
00138 QToolBar *toolBar = new QToolBar();
00139 toolBar->setMovable (false);
00140 toolBar->addWidget (newSearchButton);
00141 toolBar->addWidget (downloadButton);
00142 toolBar->addWidget (peerIpAddress);
00143 toolBar->addWidget (peerPort);
00144 toolBar->addWidget (connectButton);
00145 addToolBar (toolBar);
00146 resize (800, 500);
00147 }
00148
00149 MainWindow::~MainWindow()
00150 {
00151 delete localPeer;
00152 }
00153
00154 void MainWindow::newSearchButtonPressed(void)
00155 {
00156 static int searchCount = 0;
00157 SearchTreeView *searchTreeView = new SearchTreeView();
00158
00159
00160 if (tabWidget->indexOf (searchingResultsTab) == -1) {
00161 int index = tabWidget->addTab (searchingResultsTab, "Search Results");
00162 tabWidget->setTabIcon (index, QIcon("Icons/search.png"));
00163 tabWidget->setCurrentIndex (tabWidget->count() - 1);
00164
00165 QObject::connect (searchingResultsTab, SIGNAL(stopSearch()),
00166 this, SLOT(closeSearchingTabTrigged()));
00167 }
00168 SearchTab *searchTab = new SearchTab (searchTreeView,
00169 localPeer,
00170 searchingResultsTab);
00171 searchCount++;
00172 int addedtab = searchingResultsTab->addTab (searchTab, QString ("Search %1")
00173 .arg (searchCount));
00174 searchingResultsTab->setCurrentIndex (addedtab);
00175
00176 return;
00177 }
00178
00179 void MainWindow::downloadButtonPressed()
00180 {
00181 tabWidget->setCurrentIndex (1);
00182 }
00183
00184 void MainWindow::updateTime()
00185 {
00186 static int i = 0;
00187 i++;
00188
00189 if (i == 8) {
00190
00191
00192 }
00193 if (i == 9) {
00194
00195
00196 }
00197 if (i == 12) {
00198
00199 }
00200 }
00201
00202 void MainWindow::connectToPeer()
00203 {
00204 localPeer->connectToPeer (peerIpAddress->text(), peerPort->text().toInt());
00205 }
00206
00207 void MainWindow::initializeMenuBar()
00208 {
00209
00210 menuBar = QMainWindow::menuBar();
00211
00212 QMenu *fileMenu = new QMenu ("&File");
00213 fileMenu->addAction (tr ("Exit"), this, SLOT (exitTriggered()),
00214 QKeySequence (tr ("Ctrl+X", "File|Exit")));
00215 menuBar->addMenu (fileMenu);
00216
00217 QMenu *viewMenu = new QMenu ("&View");
00218 viewMenu->addAction (QIcon ("Icons/packet.png"), tr ("Packet Dump"),
00219 this, SLOT (packetDumpTriggered()));
00220 menuBar->addMenu (viewMenu);
00221
00222 QMenu *searchMenu = new QMenu ("&Search");
00223 searchMenu->addAction (QIcon ("Icons/search.png"), tr ("New Search"), this,
00224 SLOT (newSearchButtonPressed()),
00225 QKeySequence (tr ("Ctrl+S", "Search|New Search")));
00226 menuBar->addMenu (searchMenu);
00227
00228 QMenu *OptionsMenu = new QMenu ("&Options");
00229 menuBar->addMenu (OptionsMenu);
00230
00231 QMenu *helpMenu = new QMenu ("&Help");
00232 menuBar->addMenu (helpMenu);
00233
00234 }
00235
00236 void MainWindow::exitTriggered()
00237 {
00238 close();
00239 }
00240
00241 void MainWindow::packetDumpTriggered()
00242 {
00243 int index = tabWidget->indexOf (packetTreeView);
00244
00245 if (index >= 0) {
00246 tabWidget->setCurrentIndex (index);
00247 return;
00248 }
00249
00250
00251 packetTreeView = new PacketDumpTreeView(this, localPeer->packetModel());
00252 packetTreeView->setModel (localPeer->packetModel());
00253 packetTreeView->scrollTo (packetTreeView->indexAt(QPoint(0, 1200)), QAbstractItemView::PositionAtBottom);
00254 packetTreeView->setRootIsDecorated (false);
00255 packetTreeView->resizeColumnToContents (0);
00256 packetTreeView->resizeColumnToContents (1);
00257 packetTreeView->resizeColumnToContents (2);
00258 packetTreeView->resizeColumnToContents (3);
00259 packetTreeView->resizeColumnToContents (4);
00260 packetTreeView->resizeColumnToContents (5);
00261 packetTreeView->resizeColumnToContents (6);
00262
00263 index = tabWidget->addTab (packetTreeView, "Packet Dump");
00264 tabWidget->setCurrentIndex (tabWidget->indexOf (packetTreeView));
00265 tabWidget->setTabIcon(index, QIcon("Icons/packet.png"));
00266
00267 return;
00268 }
00269
00270 void MainWindow::closeSearchingTabTrigged()
00271 {
00272 int index = searchingResultsTab->currentIndex();
00273
00274 if (index != -1) {
00275
00276 SearchTab *tab = static_cast<SearchTab*> (searchingResultsTab->currentWidget());
00277 tab->stopSearch ();
00278 }
00279 }