static gboolean interfaces_removed(DBusConnection *conn, DBusMessage *msg, void *user_data) { GDBusClient *client = user_data; DBusMessageIter iter, entry; const char *path; if (dbus_message_iter_init(msg, &iter) == FALSE) return TRUE; if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH) return TRUE; dbus_message_iter_get_basic(&iter, &path); dbus_message_iter_next(&iter); if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY) return TRUE; dbus_message_iter_recurse(&iter, &entry); g_dbus_client_ref(client); while (dbus_message_iter_get_arg_type(&entry) == DBUS_TYPE_STRING) { const char *interface; dbus_message_iter_get_basic(&entry, &interface); proxy_remove(client, path, interface); dbus_message_iter_next(&entry); } g_dbus_client_unref(client); return TRUE; }
ProxyDlg::ProxyDlg(const ProxyItemList &list, const QStringList &methods, const QString &def, QWidget *parent) : QDialog(parent) { setAttribute(Qt::WA_DeleteOnClose); d = new Private; setupUi(this); setWindowTitle(CAP(caption())); setModal(QApplication::activeModalWidget() ? true: false); d->list = list; d->last = -1; d->pe_settings = new ProxyEdit(gb_prop); replaceWidget(lb_proxyedit, d->pe_settings); d->pe_settings->fixTabbing(cb_type, pb_close); hookEdit(); connect(pb_new, SIGNAL(clicked()), SLOT(proxy_new())); connect(pb_remove, SIGNAL(clicked()), SLOT(proxy_remove())); connect(pb_save, SIGNAL(clicked()), SLOT(doSave())); connect(pb_close, SIGNAL(clicked()), SLOT(reject())); gb_prop->setEnabled(false); pb_remove->setEnabled(false); pb_save->setDefault(true); cb_type->insertStringList(methods); connect(cb_type, SIGNAL(activated(int)), SLOT(cb_activated(int))); int defIdx = -1; int i = 0; for(ProxyItemList::ConstIterator it = d->list.begin(); it != d->list.end(); ++it) { lbx_proxy->insertItem((*it).name); if ((*it).id == def) defIdx= i; ++i; } if(!list.isEmpty()) { if(defIdx < 0) defIdx = 0; lbx_proxy->setCurrentItem(defIdx); selectCurrent(); } cb_type->setWhatsThis( tr("If you require a proxy server to connect, select the type of proxy here.") + " " + tr("Consult your network administrator if necessary.")); // TODO: whatsthis for name }