static void update (MpdStorageDeviceTile *self) { MpdStorageDeviceTilePrivate *priv = GET_PRIVATE (self); char *markup; int64_t size = -1; int64_t available_size = -1; markup = mpd_storage_device_tile_get_title (self); clutter_text_set_markup (GET_CLUTTER_TEXT (priv->label), markup); g_free (markup); if (priv->storage) { g_object_get (priv->storage, "size", &size, "available-size", &available_size, NULL); } if (size > -1 && available_size > -1) { unsigned int percentage = 100 - (double) available_size / size * 100; mx_progress_bar_set_progress (MX_PROGRESS_BAR (priv->meter), percentage / 100.); } else { g_object_set (priv->meter, "visible", false, NULL); mx_table_child_set_row_span (MX_TABLE (priv->table), priv->label, 2); } }
static void mx_progress_bar_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { MxProgressBar *self = MX_PROGRESS_BAR (object); switch (property_id) { case PROP_PROGRESS: mx_progress_bar_set_progress (self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
static void update (MpdDiskTile *self) { MpdDiskTilePrivate *priv = GET_PRIVATE (self); char *markup; char *size_text; uint64_t size; uint64_t available_size; unsigned int percentage; g_object_get (priv->storage, "size", &size, "available-size", &available_size, NULL); percentage = 100 - (double) available_size / size * 100; /* We don't want to display 0% used, we still have *something* installed */ if (percentage == 0) percentage++; size_text = g_format_size (size); markup = g_strdup_printf (_("You are using %d%% of %s"), percentage, size_text); clutter_text_set_markup (CLUTTER_TEXT (mx_label_get_clutter_text ( MX_LABEL (priv->label))), markup); g_free (markup); g_free (size_text); /* The progress bar does not look good if the percentage < 3%. We cheat * and always display a minimum of 3% */ mx_progress_bar_set_progress (MX_PROGRESS_BAR (priv->meter), MAX (.03, percentage / 100.)); }