Initial implementation of qobuz-qt
- Rust backend (qobuz-backend static lib): Qobuz API client (reqwest/tokio), Symphonia audio decoder, CPAL audio output, extern "C" FFI bridge - Qt 6 frontend mirroring spotify-qt layout: toolbar with playback controls, left library dock, central track list, right search panel - Auth: email/password login with MD5-signed requests; session token persisted via QSettings - Playback: double-click a track → Rust fetches stream URL → Symphonia decodes → CPAL outputs to default audio device - Dark Fusion palette matching spotify-qt feel Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
54
src/dialog/settings.cpp
Normal file
54
src/dialog/settings.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
#include "settings.hpp"
|
||||
#include "../util/settings.hpp"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QFormLayout>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QGroupBox>
|
||||
|
||||
SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent)
|
||||
{
|
||||
setWindowTitle(tr("Settings"));
|
||||
setMinimumWidth(400);
|
||||
|
||||
auto *layout = new QVBoxLayout(this);
|
||||
|
||||
// --- Playback group ---
|
||||
auto *playGroup = new QGroupBox(tr("Playback"), this);
|
||||
auto *playLayout = new QFormLayout(playGroup);
|
||||
|
||||
m_formatBox = new QComboBox(playGroup);
|
||||
m_formatBox->addItem(tr("Hi-Res 24-bit/192kHz"), 27);
|
||||
m_formatBox->addItem(tr("Hi-Res 24-bit/96kHz"), 7);
|
||||
m_formatBox->addItem(tr("CD 16-bit"), 6);
|
||||
m_formatBox->addItem(tr("MP3 320 kbps"), 5);
|
||||
|
||||
const int currentFormat = AppSettings::instance().preferredFormat();
|
||||
for (int i = 0; i < m_formatBox->count(); ++i) {
|
||||
if (m_formatBox->itemData(i).toInt() == currentFormat) {
|
||||
m_formatBox->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
playLayout->addRow(tr("Preferred quality:"), m_formatBox);
|
||||
layout->addWidget(playGroup);
|
||||
|
||||
layout->addStretch();
|
||||
|
||||
auto *buttons = new QDialogButtonBox(
|
||||
QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
|
||||
layout->addWidget(buttons);
|
||||
|
||||
connect(buttons, &QDialogButtonBox::accepted, this, [this] {
|
||||
applyChanges();
|
||||
accept();
|
||||
});
|
||||
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||
}
|
||||
|
||||
void SettingsDialog::applyChanges()
|
||||
{
|
||||
AppSettings::instance().setPreferredFormat(
|
||||
m_formatBox->currentData().toInt());
|
||||
}
|
||||
Reference in New Issue
Block a user