QVariant SessionListingModel::data(const QModelIndex &index, int role) const { const Session &s = m_filtered.at(index.row()); if(role == Qt::DisplayRole) { switch(index.column()) { case 0: return s.title.isEmpty() ? tr("(untitled)") : s.title; case 1: return QString::number(s.users); case 2: return s.owner; case 3: return ageString(s.started.msecsTo(QDateTime::currentDateTime()) / 1000); } } else if(role == Qt::DecorationRole) { if(index.column() == 0) { if(s.password) return icon::fromTheme("object-locked").pixmap(16, 16); } } else if(role == Qt::UserRole) { // User Role is used for sorting keys switch(index.column()) { case 0: return s.title; case 1: return s.users; case 2: return s.owner; case 3: return s.started; } } else if(role == Qt::UserRole+1) { // User role+1 is used for the session URL return sessionUrl(index.row()); } return QVariant(); }
int main_server() { qi::Session sd; if (sd.listenStandalone(serverUrl).hasError()) { std::cerr << "Service directory can't listen on " << serverUrl.str() << "." << std::endl; return 1; } serverUrl = sd.endpoints()[0]; std::cout << "Service Directory ready on " << serverUrl.str() << std::endl; qi::Session session; qi::AnyObject obj = make_service(); session.connect(sd.endpoints()[0]); qi::Url sessionUrl("tcp://0.0.0.0:0"); session.listen(sessionUrl); session.registerService("serviceTest", obj); std::cout << "serviceTest ready." << std::endl; serverReady = true; while (!clientDone) qi::os::sleep(60); return 0; }