void FilterModel::load(const QVariant& settings) { const QVariantList list = settings.toList(); for (QVariantList::const_iterator it = list.begin(); it != list.end(); ++it) { const QVariantMap map = it->toMap(); if (!map.contains("instance") || !map.contains("operations")) continue; // Name to ID conversion const QString instance = map["instance"].toString(); if (instance.isEmpty()) continue; Objref_ptr objref = m_instances.find(instance); if (!objref) continue; FirstLevelItems_t::iterator fit = m_items.find(objref->id()); if (fit == m_items.end()) continue; // End Name to ID conversion const QVariantMap operations = map["operations"].toMap(); for (unsigned int j = 0; j < objref->interface()->operation_count(); j++) { OperationDescriptor_ptr op = objref->interface()->get_reflective_by_index(j); tag_t tag = op->get_tag(); OperationsMap_t::iterator opit = fit.value().operations.find(tag); if(operations.contains(op->get_name()) && opit != fit.value().operations.end()) { bool state = operations[op->get_name()].toBool(); opit.value()->setCheckState((state)? Qt::Checked: Qt::Unchecked); } } } }
void ScriptModel::append(corbasim::core::request_ptr req, int pos) { LogEntry entry; entry.dateTime = QDateTime::currentDateTime(); OperationDescriptor_ptr op = m_instance->get_reflective_by_tag(req->get_tag()); if (!op) return; entry.reflective = op; beginInsertRows(QModelIndex(), pos, pos); core::holder hold = op->get_holder(req); Node_ptr node(new Node(op, hold)); m_nodes.insert(pos, node); // List entry.req = req; entry.text = QString("Outgoing call ") + op->get_name(); entry.icon = &m_outputIcon; // Background Color entry.color = QColor(Qt::yellow); m_entries.insert(pos, entry); endInsertRows(); }
void FilterModel::registerInstance(Objref_ptr objref) { m_instances.add(objref); FirstLevelItem item; item.objref = objref; FirstLevelItems_t::iterator it = m_items.insert(objref->id(), item); OperationsMap_t& operations = it.value().operations; QStandardItem * ifItem = new QStandardItem(objref->name()); ifItem->setEditable(false); ifItem->setCheckable(true); ifItem->setTristate(true); ifItem->setCheckState(Qt::Checked); item.item = ifItem; const unsigned int count = objref->interface()->operation_count(); for (unsigned int i = 0; i < count; i++) { OperationDescriptor_ptr op = objref->interface()->get_reflective_by_index(i); QStandardItem * opItem = new QStandardItem(op->get_name()); opItem->setEditable(false); opItem->setCheckable(true); opItem->setCheckState(Qt::Checked); ifItem->appendRow(opItem); operations.insert(op->get_tag(), opItem); } appendRow(ifItem); emit filterChanged(); }
void FilterModel::save(QVariant& settings) { QVariantList list; for (FirstLevelItems_t::iterator it = m_items.begin(); it != m_items.end(); ++it) { Objref_ptr objref = it.value().objref; QVariantMap map; map["instance"] = objref->name(); QVariantMap ops; for (unsigned int j = 0; j < objref->interface()->operation_count(); j++) { OperationDescriptor_ptr op = objref->interface()->get_reflective_by_index(j); tag_t tag = op->get_tag(); OperationsMap_t::const_iterator opit = it.value().operations.find(tag); if (opit != it.value().operations.end()) { ops[op->get_name()] = (opit.value()->checkState() == Qt::Checked); } } map["operations"] = ops; list << map; } settings = list; }
corbasim::gui::RequestDialog * SimpleClient::getRequestDialog(int idx) { RequestDialog * dlg = m_dialogs[idx]; if (!dlg) { OperationDescriptor_ptr op = m_objref->interface()->get_reflective_by_index(idx); const char * name = op->get_name(); dlg = new RequestDialog(op, this); dlg->setWindowTitle(name); connect(dlg, SIGNAL(sendRequest(Request_ptr)), this, SIGNAL(sendRequest(Request_ptr))); m_dialogs[idx] = dlg; } return dlg; }
void SimpleClient::initialize(Objref_ptr objref) { m_objref = objref; // Signals connect(this, SIGNAL(sendRequest(Request_ptr)), m_objref.get(), SLOT(sendRequest(Request_ptr))); m_log_model.registerInstance(m_objref); connect(m_objref.get(), SIGNAL(requestSent(ObjectId, const Request_ptr&, const Event_ptr&)), &m_log_model, SLOT(outputRequest(ObjectId, Request_ptr, Event_ptr))); m_filteredLog->registerInstance(m_objref); if (m_seqTool) m_seqTool->registerInstance(m_objref); QGridLayout * grid = NULL; InterfaceDescriptor_ptr factory = m_objref->interface(); const unsigned int count = factory->operation_count(); // Inicializa los dialogos a nulo m_dialogs.resize(count, NULL); for (unsigned int i = 0; i < count; i++) { const unsigned int idx = i % _max_btns_per_page; OperationDescriptor_ptr op = factory->get_reflective_by_index(i); const char * name = op->get_name(); if (!idx) { QWidget * w = new QWidget; grid = new QGridLayout; w->setLayout(grid); // TODO Page + number or from... to... QString page("From "); page += name; m_tab->addTab(w, page); } // Button QPushButton * btn = new QPushButton(name); grid->addWidget(btn, idx / _max_btns_per_row, idx % _max_btns_per_row); m_buttons.addButton(btn, i); // Menu Operations QAction * act = m_operations_menu->addAction(name); m_actions.addAction(act); act->setData(i); } // Validator for reference updates m_ref->setObjref(m_objref); }