static gboolean
csm_logout_supports_system_hibernate (CsmLogoutDialog *logout_dialog)
{
#if defined(HAVE_SYSTEMD)
        return csm_system_can_hibernate (logout_dialog->priv->system);
#elif defined(HAVE_OLD_UPOWER)
        return up_client_get_can_hibernate (logout_dialog->priv->up_client);
#endif
}
static void
disable_unavailable_combo_items (CcPowerPanel *self,
                                 GtkComboBox *combo_box)
{
  gboolean enabled;
  gboolean ret;
  gint value_tmp;
  GtkCellRenderer *renderer;
  GtkTreeIter iter;
  GtkTreeModel *model;

  /* setup the renderer */
  renderer = gtk_cell_renderer_text_new ();
  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
                                  "text", ACTION_MODEL_TEXT,
                                  "sensitive", ACTION_MODEL_SENSITIVE,
                                  NULL);

  /* get entry */
  model = gtk_combo_box_get_model (combo_box);
  ret = gtk_tree_model_get_iter_first (model, &iter);
  if (!ret)
    return;

  /* disable any actions we cannot do */
  do
    {
      gtk_tree_model_get (model, &iter,
                          ACTION_MODEL_VALUE, &value_tmp,
                          -1);
      switch (value_tmp) {
      case CSD_POWER_ACTION_SUSPEND:
#if UP_CHECK_VERSION(0,99,0)
        enabled = cc_login1("CanSuspend");
#else
        enabled = cc_login1("CanSuspend") || up_client_get_can_suspend (self->priv->up_client);
#endif
        break;
      case CSD_POWER_ACTION_HIBERNATE:
#if UP_CHECK_VERSION(0,99,0)
        enabled = cc_login1("CanHibernate");
#else
        enabled = cc_login1("CanHibernate") || up_client_get_can_hibernate (self->priv->up_client);
#endif
        break;
      default:
        enabled = TRUE;
      }
      gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                          ACTION_MODEL_SENSITIVE, enabled,
                          -1);
    } while (gtk_tree_model_iter_next (model, &iter));
}
static gboolean
gsm_logout_supports_system_hibernate (GsmLogoutDialog *logout_dialog)
{
        gboolean ret;
        ret = FALSE;
#ifdef HAVE_SYSTEMD
        if (LOGIND_RUNNING())
            ret = gsm_systemd_can_hibernate (logout_dialog->priv->systemd);
#endif
#if defined(HAVE_SYSTEMD) && defined(HAVE_UPOWER)
        else
#endif
#ifdef HAVE_UPOWER
        ret = up_client_get_can_hibernate (logout_dialog->priv->up_client);
#endif
        return ret;
}
static gboolean
csm_logout_supports_system_hibernate (CsmLogoutDialog *logout_dialog)
{
        return up_client_get_can_hibernate (logout_dialog->priv->up_client);
}