nmt-page-device.c 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
  2. /*
  3. * This program is free software; you can redistribute it and/or
  4. * modify it under the terms of the GNU General Public License as
  5. * published by the Free Software Foundation; either version 2 of the
  6. * License, or (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful, but
  9. * WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. * General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. *
  16. * Copyright 2013 Red Hat, Inc.
  17. */
  18. /**
  19. * SECTION:nmt-page-device
  20. * @short_description: Abstract base class for "device" editor pages
  21. *
  22. * #NmtPageDevice is the base class for #NmtEditorPage subclasses
  23. * representing device-type-specific data. (Eg, #NmtPageEthernet,
  24. * #NmtPageVlan, etc).
  25. *
  26. * FIXME: rename to NmtEditorPageDevice, so it doesn't sound like it's
  27. * an actual page type.
  28. */
  29. #include "config.h"
  30. #include "nmt-page-device.h"
  31. G_DEFINE_TYPE (NmtPageDevice, nmt_page_device, NMT_TYPE_EDITOR_PAGE)
  32. #define NMT_PAGE_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NMT_TYPE_PAGE_DEVICE, NmtPageDevicePrivate))
  33. typedef struct {
  34. NmtDeviceEntry *device_entry;
  35. gboolean show_by_default;
  36. } NmtPageDevicePrivate;
  37. enum {
  38. PROP_0,
  39. PROP_DEVICE_ENTRY,
  40. PROP_SHOW_BY_DEFAULT,
  41. LAST_PROP
  42. };
  43. static void
  44. nmt_page_device_init (NmtPageDevice *device)
  45. {
  46. }
  47. static void
  48. nmt_page_device_finalize (GObject *object)
  49. {
  50. NmtPageDevicePrivate *priv = NMT_PAGE_DEVICE_GET_PRIVATE (object);
  51. g_clear_object (&priv->device_entry);
  52. G_OBJECT_CLASS (nmt_page_device_parent_class)->finalize (object);
  53. }
  54. NmtDeviceEntry *
  55. nmt_page_device_get_device_entry (NmtPageDevice *page)
  56. {
  57. NmtPageDevicePrivate *priv = NMT_PAGE_DEVICE_GET_PRIVATE (page);
  58. return priv->device_entry;
  59. }
  60. gboolean
  61. nmt_page_device_get_show_by_default (NmtPageDevice *page)
  62. {
  63. NmtPageDevicePrivate *priv = NMT_PAGE_DEVICE_GET_PRIVATE (page);
  64. return priv->show_by_default;
  65. }
  66. static void
  67. nmt_page_device_set_property (GObject *object,
  68. guint prop_id,
  69. const GValue *value,
  70. GParamSpec *pspec)
  71. {
  72. NmtPageDevicePrivate *priv = NMT_PAGE_DEVICE_GET_PRIVATE (object);
  73. switch (prop_id) {
  74. case PROP_DEVICE_ENTRY:
  75. priv->device_entry = g_value_dup_object (value);
  76. break;
  77. case PROP_SHOW_BY_DEFAULT:
  78. priv->show_by_default = g_value_get_boolean (value);
  79. break;
  80. default:
  81. G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  82. break;
  83. }
  84. }
  85. static void
  86. nmt_page_device_get_property (GObject *object,
  87. guint prop_id,
  88. GValue *value,
  89. GParamSpec *pspec)
  90. {
  91. NmtPageDevicePrivate *priv = NMT_PAGE_DEVICE_GET_PRIVATE (object);
  92. switch (prop_id) {
  93. case PROP_DEVICE_ENTRY:
  94. g_value_set_object (value, priv->device_entry);
  95. break;
  96. case PROP_SHOW_BY_DEFAULT:
  97. g_value_set_boolean (value, priv->show_by_default);
  98. break;
  99. default:
  100. G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  101. break;
  102. }
  103. }
  104. static void
  105. nmt_page_device_class_init (NmtPageDeviceClass *page_device_class)
  106. {
  107. GObjectClass *object_class = G_OBJECT_CLASS (page_device_class);
  108. g_type_class_add_private (page_device_class, sizeof (NmtPageDevicePrivate));
  109. /* virtual methods */
  110. object_class->set_property = nmt_page_device_set_property;
  111. object_class->get_property = nmt_page_device_get_property;
  112. object_class->finalize = nmt_page_device_finalize;
  113. /* properties */
  114. g_object_class_install_property (object_class, PROP_DEVICE_ENTRY,
  115. g_param_spec_object ("device-entry", "", "",
  116. NMT_TYPE_DEVICE_ENTRY,
  117. G_PARAM_READWRITE |
  118. G_PARAM_CONSTRUCT_ONLY |
  119. G_PARAM_STATIC_STRINGS));
  120. g_object_class_install_property (object_class, PROP_SHOW_BY_DEFAULT,
  121. g_param_spec_boolean ("show-by-default", "", "",
  122. TRUE,
  123. G_PARAM_READWRITE |
  124. G_PARAM_CONSTRUCT_ONLY |
  125. G_PARAM_STATIC_STRINGS));
  126. }