diff --git a/tools/chatgui/src/inputbar.cpp b/tools/chatgui/src/inputbar.cpp index f66e4b60..35dca3d0 100644 --- a/tools/chatgui/src/inputbar.cpp +++ b/tools/chatgui/src/inputbar.cpp @@ -273,10 +273,17 @@ void InputBar::onSendClicked() { } void InputBar::setRecordingContext(const QString& mediaDirBase, const QString& channelId) { + if (m_channelIdForRecord != channelId) clearPendingAttachment(); m_mediaDirBase = mediaDirBase; m_channelIdForRecord = channelId; } +void InputBar::setDmMode(bool enabled) { + m_dmMode = enabled; + m_pttBtn->setEnabled(!enabled); + m_attachBtn->setEnabled(true); +} + void InputBar::setMediaEnabled(bool enabled) { if (m_pttBtn) m_pttBtn->setEnabled(enabled); if (m_attachBtn) m_attachBtn->setEnabled(enabled); @@ -353,6 +360,17 @@ void InputBar::onAttachClicked() { if (srcPath.isEmpty()) return; QFileInfo fi(srcPath); + if (m_dmMode) { + m_pendingAttachSrc = srcPath; + m_pendingAttachDest = srcPath; + m_pendingAttachName = fi.fileName(); + m_pendingAttachSize = fi.size(); + m_pendingAttachAsVideo = m_pendingAttachAsImage = false; + m_attachPreviewLabel->setText(QString::fromUtf8("πŸ“Ž %1 (%2)").arg(fi.fileName(), formatFileSize(fi.size()))); + m_attachPreview->show(); + GUI_INFO("InputBar: PM attachment selected name=%s bytes=%lld", qPrintable(fi.fileName()), (long long)fi.size()); + return; + } if (fi.size() == 0) { DEBUG_WARN(DEBUG_CATEGORY_DEBUG, "InputBar::onAttachClicked: empty file"); return; } QString mediaPath = m_mediaDirBase + "/" + m_channelIdForRecord; diff --git a/tools/chatgui/src/inputbar.h b/tools/chatgui/src/inputbar.h index 84870dca..3032cf97 100644 --- a/tools/chatgui/src/inputbar.h +++ b/tools/chatgui/src/inputbar.h @@ -18,7 +18,8 @@ public: void setRecordingContext(const QString& mediaDirBase, const QString& channelId); - /* Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°-ΠΊΠ½ΠΎΠΏΠΊΠΈ (PTT/attach). Для DM (text-only) β€” Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ. */ + /* DM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· канальной ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ. */ + void setDmMode(bool enabled); void setMediaEnabled(bool enabled); signals: @@ -65,6 +66,7 @@ private: QLabel *m_attachPreviewLabel = nullptr; QPushButton *m_attachClearBtn = nullptr; bool m_pttActive = false; + bool m_dmMode = false; QString m_voiceFilePath; QString m_mediaDirBase; QString m_channelIdForRecord;