static void
tile_drag_run (MnpClockTile *tile, int ypos, MnpClockArea *area)
{
  /*ClutterActor *self = CLUTTER_ACTOR (area);
  ClutterActor *child = CLUTTER_ACTOR (tile); */
  GPtrArray *tiles = area->priv->clock_tiles;
  int i, pos;
  int diff = tiles->len == 4 ? 80 : 110;
  g_object_ref (tile);

  pos = (ypos-diff) / 80;
  if (pos >= tiles->len)
	  pos = tiles->len -1;
 
  g_ptr_array_remove (tiles, (gpointer) tile);
  insert_in_ptr_array (tiles, tile, pos);

  clutter_actor_set_depth ((ClutterActor *)tile, ((pos+1) * 0.05) - 0.01);
 
 
  for (i=tiles->len-1; i >= 0; i--) {
	  clutter_actor_set_depth (tiles->pdata[i], (i + 1) * 0.05);
  }
 
  g_object_unref (tile);		
}
static void
mnp_clock_area_drop (MxDroppable *droppable, MxDraggable *draggable, gfloat event_x, gfloat event_y, gint button, ClutterModifierType modifiers)
{
  ClutterActor *self = CLUTTER_ACTOR (droppable);
  ClutterActor *child = CLUTTER_ACTOR (draggable);
  MnpClockTile *tile = (MnpClockTile *)draggable;
  MnpClockArea *area = (MnpClockArea *)droppable;
  GPtrArray *tiles = area->priv->clock_tiles;
  int i, pos;

  g_object_ref (draggable);

  pos = (event_y) / 80;
  if (pos >= tiles->len)
	  pos = tiles->len -1;
 
  clutter_actor_reparent (child, self);

  g_ptr_array_remove (tiles, (gpointer) draggable);
  insert_in_ptr_array (tiles, draggable, pos);

  clutter_actor_set_depth ((ClutterActor *)draggable, ((pos+1) * 0.05) - 0.01);
 
 
  for (i=tiles->len-1; i >= 0; i--) {
	  clutter_actor_set_depth (tiles->pdata[i], (i + 1) * 0.05);
  }
 
  area->priv->zone_reorder_func(mnp_clock_tile_get_location(tile), pos, area->priv->zone_reorder_data);

  g_object_unref (draggable);	
}
Example #3
0
static void
zone_reordered_cb (MnpZoneLocation *location, int new_pos, MnpWorldClock *clock)
{
    MnpWorldClockPrivate *priv = GET_PRIVATE (clock);
    char *cloc = location->display;
    int i;

    for (i=0; i<priv->zones->len; i++) {
        MnpZoneLocation *loc = (MnpZoneLocation *)priv->zones->pdata[i];
        if (strcmp(cloc, loc->display) == 0) {
            break;
        }

    }

    g_ptr_array_remove_index (priv->zones, i);
    insert_in_ptr_array (priv->zones, (gpointer) location, new_pos);

    mnp_save_zones (priv->zones);
}