| 69 | } |
| 70 | |
| 71 | QWidget* Int::get_widget(QWidget *parent, bool auto_commit) |
| 72 | { |
| 73 | int64_t int_val = 0, range_min = 0, range_max = 0; |
| 74 | |
| 75 | if (_spin_box) |
| 76 | return _spin_box; |
| 77 | |
| 78 | if (_value) |
| 79 | g_variant_unref(_value); |
| 80 | |
| 81 | _value = _getter ? _getter() : NULL; |
| 82 | if (!_value) |
| 83 | return NULL; |
| 84 | |
| 85 | _spin_box = new QSpinBox(parent); |
| 86 | _spin_box->setSuffix(_suffix); |
| 87 | |
| 88 | const GVariantType *const type = g_variant_get_type(_value); |
| 89 | assert(type); |
| 90 | |
| 91 | if (g_variant_type_equal(type, G_VARIANT_TYPE_BYTE)) |
| 92 | { |
| 93 | int_val = g_variant_get_byte(_value); |
| 94 | range_min = 0, range_max = UINT8_MAX; |
| 95 | } |
| 96 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT16)) |
| 97 | { |
| 98 | int_val = g_variant_get_int16(_value); |
| 99 | range_min = INT16_MIN, range_max = INT16_MAX; |
| 100 | } |
| 101 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT16)) |
| 102 | { |
| 103 | int_val = g_variant_get_uint16(_value); |
| 104 | range_min = 0, range_max = UINT16_MAX; |
| 105 | } |
| 106 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT32)) |
| 107 | { |
| 108 | int_val = g_variant_get_int32(_value); |
| 109 | range_min = INT32_MIN, range_max = INT32_MAX; |
| 110 | } |
| 111 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT32)) |
| 112 | { |
| 113 | int_val = g_variant_get_uint32(_value); |
| 114 | range_min = 0, range_max = UINT32_MAX; |
| 115 | } |
| 116 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT64)) |
| 117 | { |
| 118 | int_val = g_variant_get_int64(_value); |
| 119 | range_min = INT64_MIN, range_max = INT64_MAX; |
| 120 | } |
| 121 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT64)) |
| 122 | { |
| 123 | int_val = g_variant_get_uint64(_value); |
| 124 | range_min = 0, range_max = UINT64_MAX; |
| 125 | } |
| 126 | else |
| 127 | { |
| 128 | // Unexpected value type. |
no test coverage detected