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();
}
Exemple #2
0
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;
}