| 103 | } |
| 104 | |
| 105 | void ClientPuduApplet::buildUI() |
| 106 | { |
| 107 | setStyleSheet("QWidget { background: transparent; }"); |
| 108 | |
| 109 | auto* outer = new QVBoxLayout(this); |
| 110 | outer->setContentsMargins(4, 4, 4, 4); |
| 111 | outer->setSpacing(4); |
| 112 | |
| 113 | // ── Logo ──────────────────────────────────────────────────── |
| 114 | m_logo = new PooDooLogo; |
| 115 | m_logo->setMinimumHeight(40); |
| 116 | m_logo->setWordmark(QString::fromUtf8("AetherVoice\xe2\x84\xa2")); |
| 117 | outer->addWidget(m_logo); |
| 118 | |
| 119 | // ── A/B mode toggle ───────────────────────────────────────── |
| 120 | { |
| 121 | auto* row = new QHBoxLayout; |
| 122 | row->setSpacing(4); |
| 123 | row->addStretch(); |
| 124 | auto* group = new QButtonGroup(this); |
| 125 | group->setExclusive(true); |
| 126 | |
| 127 | m_modeA = new QPushButton("Even"); |
| 128 | m_modeA->setCheckable(true); |
| 129 | m_modeA->setStyleSheet(kModeStyle); |
| 130 | m_modeA->setFixedHeight(22); |
| 131 | m_modeA->setToolTip( |
| 132 | "Aphex-lineage asymmetric shaping — predominantly even " |
| 133 | "harmonics, warmer, with Big Bottom LF saturation."); |
| 134 | group->addButton(m_modeA, 0); |
| 135 | row->addWidget(m_modeA); |
| 136 | |
| 137 | m_modeB = new QPushButton("Odd"); |
| 138 | m_modeB->setCheckable(true); |
| 139 | m_modeB->setStyleSheet(kModeStyle); |
| 140 | m_modeB->setFixedHeight(22); |
| 141 | m_modeB->setToolTip( |
| 142 | "Behringer-lineage symmetric tanh shaping — pure odd " |
| 143 | "harmonics, brighter, with a feed-forward bass compressor."); |
| 144 | group->addButton(m_modeB, 1); |
| 145 | row->addWidget(m_modeB); |
| 146 | row->addStretch(); |
| 147 | |
| 148 | connect(group, &QButtonGroup::idToggled, this, |
| 149 | [this](int id, bool checked) { |
| 150 | if (checked) onModeToggled(id); |
| 151 | }); |
| 152 | |
| 153 | outer->addLayout(row); |
| 154 | } |
| 155 | |
| 156 | // ── Knob row — all 6 on one line with Poo | gap | Doo grouping ── |
| 157 | // |
| 158 | // Grid layout: row 0 = bracket labels, row 1 = knobs. Knobs |
| 159 | // occupy columns 0-2 (Poo) and 4-6 (Doo); column 3 is a fixed |
| 160 | // spacer separating the two groups. |
| 161 | { |
| 162 | auto* grid = new QGridLayout; |
nothing calls this directly
no test coverage detected