Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.5KB

  1. /*
  2. * Carla plugin host
  3. * Copyright (C) 2011-2023 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  16. */
  17. #include "qsafesettings.hpp"
  18. #if QT_VERSION >= 0x60000
  19. #define QT6_COMPAT(type) QMetaType(type)
  20. #else
  21. #define QT6_COMPAT(type) type
  22. #endif
  23. //---------------------------------------------------------------------------------------------------------------------
  24. bool QSafeSettings::valueBool(const QString& key, const bool defaultValue) const
  25. {
  26. QVariant var(value(key, defaultValue));
  27. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::Bool)) && var.isValid())
  28. return var.toBool();
  29. return defaultValue;
  30. }
  31. Qt::CheckState QSafeSettings::valueCheckState(const QString& key, const Qt::CheckState defaultValue) const
  32. {
  33. QVariant var(value(key, defaultValue));
  34. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::UInt)) && var.isValid())
  35. {
  36. const uint value = var.toUInt();
  37. switch (value)
  38. {
  39. case Qt::Unchecked:
  40. case Qt::PartiallyChecked:
  41. case Qt::Checked:
  42. return static_cast<Qt::CheckState>(value);
  43. }
  44. }
  45. return defaultValue;
  46. }
  47. int QSafeSettings::valueIntPositive(const QString& key, const int defaultValue) const
  48. {
  49. QVariant var(value(key, defaultValue));
  50. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::Int)) && var.isValid())
  51. {
  52. const int value = var.toInt();
  53. return value >= 0 ? value : defaultValue;
  54. }
  55. return defaultValue;
  56. }
  57. uint QSafeSettings::valueUInt(const QString& key, const uint defaultValue) const
  58. {
  59. QVariant var(value(key, defaultValue));
  60. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::UInt)) && var.isValid())
  61. return var.toUInt();
  62. return defaultValue;
  63. }
  64. double QSafeSettings::valueDouble(const QString& key, const double defaultValue) const
  65. {
  66. QVariant var(value(key, defaultValue));
  67. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::Double)) && var.isValid())
  68. return var.toDouble();
  69. return defaultValue;
  70. }
  71. QString QSafeSettings::valueString(const QString& key, const QString& defaultValue) const
  72. {
  73. QVariant var(value(key, defaultValue));
  74. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::String)) && var.isValid())
  75. return var.toString();
  76. return defaultValue;
  77. }
  78. QByteArray QSafeSettings::valueByteArray(const QString& key, const QByteArray defaultValue) const
  79. {
  80. QVariant var(value(key, defaultValue));
  81. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::ByteArray)) && var.isValid())
  82. return var.toByteArray();
  83. return defaultValue;
  84. }
  85. QStringList QSafeSettings::valueStringList(const QString& key, const QStringList defaultValue) const
  86. {
  87. QVariant var(value(key, defaultValue));
  88. if (!var.isNull() && var.convert(QT6_COMPAT(QVariant::StringList)) && var.isValid())
  89. return var.toStringList();
  90. return defaultValue;
  91. }
  92. //---------------------------------------------------------------------------------------------------------------------