예제 #1
0
파일: ttx-window.c 프로젝트: djcb/ttx
void
ttx_window_request_page (TTXWindow *self,
			 TTXProviderID prov_id, unsigned page,
			 unsigned subpage)
{
	const char		*combo_id;
	GtkComboBox		*combo;
	const TTXProvider	*prov;

	g_return_if_fail (TTX_IS_WINDOW(self));
	g_return_if_fail (page >= 100 && page <= 999);
	g_return_if_fail (subpage > 0);

	if (page > 999 || subpage < 1) {
		g_warning ("invalid page %u/%u", page, subpage);
		update_entry (self);
	}

	/* if not provided, get the last one (or the default) */
	if (!prov_id)
		prov_id = get_provider_id (self);

	if (prov_id) {
		prov = ttx_provider_mgr_get_provider (
			self->priv->prov_mgr, prov_id);
		if (!prov) {
			g_printerr (_("unknown teletext provider %s\n"),
				    prov_id);
			prov_id = "nos"; /* default */
		}
		
	}
	
	combo	 = GTK_COMBO_BOX(self->priv->combo);
	combo_id = gtk_combo_box_get_active_id (combo);

	self->priv->retrieving = TRUE;

	if (g_strcmp0 (prov_id, combo_id) != 0)
		if (!gtk_combo_box_set_active_id (combo, prov_id))
			g_warning ("failed to set active id to %s",
				   prov_id);

	ttx_provider_mgr_retrieve
		(self->priv->prov_mgr,
		 prov_id,
		 page, subpage,
		 (TTXProviderResultFunc)on_completed,
		 self);
}
int
QcOfflineCacheDatabase::get_map_level_id(const QcTileSpec & tile_spec)
{
  int provider_id = get_provider_id(tile_spec.plugin()); // Fixme: provider
  unsigned int map_level_hash = hash_tile_spec(provider_id, tile_spec.map_id(), tile_spec.level());
  if (m_map_levels.contains(map_level_hash))
    return m_map_levels[map_level_hash];
  else {
    KeyValuePair kwargs;
    kwargs.insert(PROVIDER_ID, provider_id);
    kwargs.insert(MAP_ID, tile_spec.map_id());
    kwargs.insert(LEVEL, tile_spec.level());
    insert(MAP_LEVEL, kwargs);
    QString where = format_simple_where(kwargs);
    QSqlRecord record = select_one(MAP_LEVEL, QStringList(MAP_LEVEL_ID), where);
    int map_level_id = record.value(0).toInt();
    m_map_levels.insert(map_level_hash, map_level_id);
    return map_level_id;
  }
}