Changeset 2979

Show
Ignore:
Timestamp:
04/28/06 06:41:16 (3 years ago)
Author:
madcat
Message:

Servers removing support from gui. Context menu in gui server list.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • hydranode/hncore/cgcomm/sub_modules.cpp

    r2971 r2979  
    246246                sendPacket(tmp.str()); 
    247247                m_dirty.erase(obj); 
    248                 logDebug("Object ADDED: " + obj->getParent()->getName() + " + " + obj->getName()); 
    249248        } else if (evt == OBJ_REMOVED && obj->getParent()) { 
    250249                std::ostringstream tmp; 
     
    254253                sendPacket(tmp.str()); 
    255254                m_dirty.erase(obj); 
    256                 logDebug("Object REMOVED: " + obj->getParent()->getName() + " + " + obj->getName()); 
    257255        } 
    258256} 
  • hydranode/hncore/ed2k/serverlist.cpp

    r2974 r2979  
    12001200uint32_t ServerList::getOperCount() const {  
    12011201#ifndef NDEBUG 
    1202         return 6;  
     1202        return 7;  
    12031203#else 
    1204         return 5
     1204        return 6
    12051205#endif 
    12061206} 
     
    12241224                op.addArg(Operation::Argument("id", true, ODT_INT)); 
    12251225                return op; 
     1226        } else if (n == 5) { 
     1227                Operation op("removeId", true); 
     1228                op.addArg(Operation::Argument("id", true, ODT_INT)); 
     1229                return op; 
    12261230#ifndef NDEBUG 
    12271231        } else if (n == 5) { 
     
    13011305                                if (s) { 
    13021306                                        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; 
    13031322                                } 
    13041323                        } 
     
    13311350                ClientList::instance().printDeadClients(); 
    13321351                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                } 
    13431364        } else { 
    1344                 connect(*i.first); 
     1365                throw std::runtime_error("Unknown operation."); 
    13451366        } 
    13461367} 
  • hydranode/hngui/plugins/donkeypage.cpp

    r2978 r2979  
    2626#include <limits> 
    2727#include <QPainter> 
     28#include <QMenu> 
     29#include <QContextMenuEvent> 
    2830#include <boost/lexical_cast.hpp> 
    2931 
     
    174176                SLOT(connectToServer(QTreeWidgetItem*, int)) 
    175177        ); 
     178        m_ui->serverList->installEventFilter(this); 
    176179} 
    177180 
     
    184187        m_disableSorting = true; 
    185188        while (i != obj->end()) { 
    186                 addObject(i->second); 
     189                if (!m_list.contains(i->second->getId())) { 
     190                        addObject(i->second); 
     191                } 
    187192                ++i; 
    188193        } 
     
    200205                QString id = QString::fromStdString(obj->getData(2)); 
    201206                ServerListItem *cur = m_list.value(curServer.toUInt()); 
    202                 if (cur && m_currentServer) { 
     207                if (m_currentServer) { 
    203208                        for (int i = 0; i < m_currentServer->columnCount();++i){ 
    204209                                QFont f(m_currentServer->font(i)); 
     
    342347        m_serverList->doOper("connectId", args); 
    343348} 
     349 
     350void 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 
     360bool 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  
    5858public Q_SLOTS: 
    5959        void connectToServer(QTreeWidgetItem *it, int col); 
     60        void removeServer(QTreeWidgetItem *it); 
     61protected: 
     62        bool eventFilter(QObject *obj, QEvent *evt); 
    6063private: 
    6164        void gotServers(Engine::ObjectPtr obj); 
  • hydranode/hngui/plugins/donkeypage_ui.ui

    r2965 r2979  
    3333     <property name="alternatingRowColors" > 
    3434      <bool>true</bool> 
     35     </property> 
     36     <property name="selectionMode" > 
     37      <enum>QAbstractItemView::ExtendedSelection</enum> 
    3538     </property> 
    3639     <property name="rootIsDecorated" >