Changeset 2979
- Timestamp:
- 04/28/06 06:41:16 (3 years ago)
- Files:
-
- hydranode/hncore/cgcomm/sub_modules.cpp (modified) (2 diffs)
- hydranode/hncore/ed2k/serverlist.cpp (modified) (4 diffs)
- hydranode/hngui/plugins/donkeypage.cpp (modified) (5 diffs)
- hydranode/hngui/plugins/donkeypage.h (modified) (1 diff)
- hydranode/hngui/plugins/donkeypage_ui.ui (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
hydranode/hncore/cgcomm/sub_modules.cpp
r2971 r2979 246 246 sendPacket(tmp.str()); 247 247 m_dirty.erase(obj); 248 logDebug("Object ADDED: " + obj->getParent()->getName() + " + " + obj->getName());249 248 } else if (evt == OBJ_REMOVED && obj->getParent()) { 250 249 std::ostringstream tmp; … … 254 253 sendPacket(tmp.str()); 255 254 m_dirty.erase(obj); 256 logDebug("Object REMOVED: " + obj->getParent()->getName() + " + " + obj->getName());257 255 } 258 256 } hydranode/hncore/ed2k/serverlist.cpp
r2974 r2979 1200 1200 uint32_t ServerList::getOperCount() const { 1201 1201 #ifndef NDEBUG 1202 return 6;1202 return 7; 1203 1203 #else 1204 return 5;1204 return 6; 1205 1205 #endif 1206 1206 } … … 1224 1224 op.addArg(Operation::Argument("id", true, ODT_INT)); 1225 1225 return op; 1226 } else if (n == 5) { 1227 Operation op("removeId", true); 1228 op.addArg(Operation::Argument("id", true, ODT_INT)); 1229 return op; 1226 1230 #ifndef NDEBUG 1227 1231 } else if (n == 5) { … … 1301 1305 if (s) { 1302 1306 connect(s); 1307 } 1308 } 1309 } 1310 return; 1311 } else if (op.getName() == "removeId") { 1312 uint32_t id = boost::lexical_cast<uint32_t>( 1313 op.getArg("id").getValue() 1314 ); 1315 if (id) { 1316 Object *obj = findChild(id); 1317 if (obj) { 1318 Server *s = dynamic_cast<Server*>(obj); 1319 if (s) { 1320 m_list->erase(s); 1321 delete s; 1303 1322 } 1304 1323 } … … 1331 1350 ClientList::instance().printDeadClients(); 1332 1351 return; 1333 } 1334 1335 CHECK_THROW(op.getName() == "connect"); 1336 1337 std::string name = op.getArg("server").getValue(); 1338 std::pair<NameIter, NameIter> i = m_list->get<2>().equal_range(name); 1339 if (std::distance(i.first, i.second) > 1) { 1340 throw std::runtime_error("Ambiguous server name."); 1341 } else if (i.first == m_list->get<2>().end()) { 1342 throw std::runtime_error("No such server."); 1352 } else if (op.getName() == "connect") { 1353 std::string name = op.getArg("server").getValue(); 1354 std::pair<NameIter, NameIter> i = m_list->get<2>().equal_range( 1355 name 1356 ); 1357 if (std::distance(i.first, i.second) > 1) { 1358 throw std::runtime_error("Ambiguous server name."); 1359 } else if (i.first == m_list->get<2>().end()) { 1360 throw std::runtime_error("No such server."); 1361 } else { 1362 connect(*i.first); 1363 } 1343 1364 } else { 1344 connect(*i.first);1365 throw std::runtime_error("Unknown operation."); 1345 1366 } 1346 1367 } hydranode/hngui/plugins/donkeypage.cpp
r2978 r2979 26 26 #include <limits> 27 27 #include <QPainter> 28 #include <QMenu> 29 #include <QContextMenuEvent> 28 30 #include <boost/lexical_cast.hpp> 29 31 … … 174 176 SLOT(connectToServer(QTreeWidgetItem*, int)) 175 177 ); 178 m_ui->serverList->installEventFilter(this); 176 179 } 177 180 … … 184 187 m_disableSorting = true; 185 188 while (i != obj->end()) { 186 addObject(i->second); 189 if (!m_list.contains(i->second->getId())) { 190 addObject(i->second); 191 } 187 192 ++i; 188 193 } … … 200 205 QString id = QString::fromStdString(obj->getData(2)); 201 206 ServerListItem *cur = m_list.value(curServer.toUInt()); 202 if ( cur &&m_currentServer) {207 if (m_currentServer) { 203 208 for (int i = 0; i < m_currentServer->columnCount();++i){ 204 209 QFont f(m_currentServer->font(i)); … … 342 347 m_serverList->doOper("connectId", args); 343 348 } 349 350 void DonkeyPage::removeServer(QTreeWidgetItem *it) { 351 ServerListItem *server = dynamic_cast<ServerListItem*>(it); 352 if (!server) { 353 return; 354 } 355 std::map<std::string, std::string> args; 356 args["id"] = boost::lexical_cast<std::string>(server->m_data->getId()); 357 m_serverList->doOper("removeId", args); 358 } 359 360 bool DonkeyPage::eventFilter(QObject *obj, QEvent *evt) { 361 if (obj == m_ui->serverList && evt->type() == QEvent::ContextMenu) { 362 QContextMenuEvent *e = dynamic_cast<QContextMenuEvent*>(evt); 363 if (!e) { 364 return false; 365 } 366 QTreeWidgetItem *it = m_ui->serverList->itemAt( 367 m_ui->serverList->viewport()->mapFrom((QWidget*)obj, e->pos()) 368 ); 369 if (!it) { 370 return false; 371 } 372 if (!m_ui->serverList->isItemSelected(it)) { 373 if (e->modifiers() == Qt::NoModifier) { 374 QList<QTreeWidgetItem*> items( 375 m_ui->serverList->selectedItems() 376 ); 377 Q_FOREACH(QTreeWidgetItem *i, items) { 378 m_ui->serverList->setItemSelected( 379 i, false 380 ); 381 } 382 } 383 m_ui->serverList->setItemSelected(it, true); 384 } 385 386 QMenu menu(this); 387 QAction *con = menu.addAction("Connect"); 388 QAction *rem = menu.addAction( 389 QIcon("/transfer/icons/cancel16"), "Remove" 390 ); 391 QAction *ret = menu.exec(e->globalPos()); 392 if (ret && ret == rem) { 393 QList<QTreeWidgetItem*> items( 394 m_ui->serverList->selectedItems() 395 ); 396 Q_FOREACH(QTreeWidgetItem *s, items) { 397 removeServer(s); 398 } 399 } else if (ret && ret == con) { 400 connectToServer(it, 0); 401 } 402 } 403 return false; 404 } 405 hydranode/hngui/plugins/donkeypage.h
r2978 r2979 58 58 public Q_SLOTS: 59 59 void connectToServer(QTreeWidgetItem *it, int col); 60 void removeServer(QTreeWidgetItem *it); 61 protected: 62 bool eventFilter(QObject *obj, QEvent *evt); 60 63 private: 61 64 void gotServers(Engine::ObjectPtr obj); hydranode/hngui/plugins/donkeypage_ui.ui
r2965 r2979 33 33 <property name="alternatingRowColors" > 34 34 <bool>true</bool> 35 </property> 36 <property name="selectionMode" > 37 <enum>QAbstractItemView::ExtendedSelection</enum> 35 38 </property> 36 39 <property name="rootIsDecorated" >
