Browse Source

Keep profile controls consistent with the saved avatar server

master
evgeny 6 days ago
parent
commit
6d3187db57
  1. 5
      tools/chatgui/src/avatars/avatarmanager.cpp
  2. 2
      tools/chatgui/src/avatars/avatarmanager.h
  3. 7
      tools/chatgui/src/settingsdialog.cpp

5
tools/chatgui/src/avatars/avatarmanager.cpp

@ -52,8 +52,9 @@ void AvatarManager::initialize() {
m_defaultConfigured = !desired.isEmpty();
if (desired != "-" && !desired.isEmpty()) {
const auto parts = desired.split('/');
if (parts.size() == 2 && mf_avatar_file_valid(parts[1].toLatin1().constData())) {
m_defaultServer = parts[0].toULongLong(nullptr, 16); m_defaultHash = parts[1].left(64);
bool valid = false; quint64 server = parts[0].toULongLong(&valid, 16);
if (parts.size() == 2 && valid && server && mf_avatar_file_valid(parts[1].toLatin1().constData())) {
m_defaultServer = server; m_defaultHash = parts[1].left(64);
} else {
DEBUG_WARN(DEBUG_CATEGORY_MEDIA, "avatar: invalid saved default reference"); m_defaultConfigured = false;
}

2
tools/chatgui/src/avatars/avatarmanager.h

@ -29,6 +29,8 @@ public:
void uploadDefault(const QString& source, quint64 server);
void clearDefault();
QImage defaultImage() const;
quint64 defaultServer() const { return m_defaultServer; }
bool ready() const { return m_ready; }
signals:
void changed(const QString& channel, quint64 owner);
void serversChanged();

7
tools/chatgui/src/settingsdialog.cpp

@ -101,13 +101,14 @@ SettingsDialog::SettingsDialog(const QString& configPath, DbManager* db, UtunNod
note->setWordWrap(true); box->addWidget(preview); box->addWidget(server);
buttons->addWidget(upload); buttons->addWidget(clear); box->addLayout(buttons); box->addWidget(status); box->addWidget(note);
profLayout->addRow(QCoreApplication::translate("ChatGui", "Avatar:"), controls);
auto update = [avatars, server, preview, upload] {
const quint64 selected = server->currentData().toULongLong(); server->clear();
auto update = [avatars, server, preview, upload, clear] {
const quint64 selected = server->count() ? server->currentData().toULongLong() : avatars->defaultServer(); server->clear();
const auto servers = avatars->servers();
for (auto it = servers.begin(); it != servers.end(); ++it)
server->addItem(QString("%1 · %2").arg(it.value(), QString::number(it.key(), 16)), QVariant::fromValue(it.key()));
int index = server->findData(QVariant::fromValue(selected)); if (index >= 0) server->setCurrentIndex(index);
upload->setEnabled(server->count() && gui_bridge_is_uasync_ready());
upload->setEnabled(avatars->ready() && server->count() && gui_bridge_is_uasync_ready());
clear->setEnabled(avatars->ready() && gui_bridge_is_uasync_ready());
const QImage image = avatars->defaultImage();
preview->setPixmap(image.isNull() ? QPixmap() : QPixmap::fromImage(image).scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation));
if (image.isNull()) preview->setText(QCoreApplication::translate("ChatGui", "No avatar"));

Loading…
Cancel
Save