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.
66 lines
1.9 KiB
66 lines
1.9 KiB
#pragma once |
|
|
|
#include <QWidget> |
|
|
|
class QTextEdit; |
|
class QPushButton; |
|
class QLabel; |
|
class QProgressBar; |
|
class EmojiPanel; |
|
class AudioRecorder; |
|
|
|
class InputBar : public QWidget { |
|
Q_OBJECT |
|
public: |
|
explicit InputBar(EmojiPanel *emojiPanel, AudioRecorder *recorder, |
|
QWidget *parent = nullptr); |
|
|
|
void setRecordingContext(const QString& mediaDirBase, const QString& channelId); |
|
|
|
signals: |
|
void sendMessage(const QString &text); |
|
void sendVoiceMessage(const QString& mediaSrc, const QString& mediaDest, |
|
int durationMs, const QString& waveformStr); |
|
void sendFileAttachment(const QString& mediaSrc, const QString& mediaDest, |
|
const QString& displayName); |
|
|
|
protected: |
|
bool eventFilter(QObject *obj, QEvent *event) override; |
|
void resizeEvent(QResizeEvent* event) override; |
|
|
|
private slots: |
|
void onSendClicked(); |
|
void adjustInputHeight(); |
|
void onPttPressed(); |
|
void onPttReleased(); |
|
void onAttachClicked(); |
|
void clearPendingAttachment(); |
|
void updateRecordingUI(int ms); |
|
void showRecordOverlay(); |
|
void hideRecordOverlay(); |
|
|
|
private: |
|
static QString formatFileSize(qint64 bytes); |
|
|
|
QTextEdit *m_input; |
|
QPushButton *m_emojiBtn; |
|
QPushButton *m_pttBtn; |
|
QPushButton *m_attachBtn = nullptr; |
|
EmojiPanel *m_emojiPanel; |
|
AudioRecorder *m_recorder; |
|
QWidget *m_recordOverlay = nullptr; |
|
QLabel *m_recordLabel = nullptr; |
|
QPushButton *m_cancelRecBtn = nullptr; |
|
QProgressBar *m_levelBar = nullptr; |
|
QWidget *m_attachPreview = nullptr; |
|
QLabel *m_attachPreviewLabel = nullptr; |
|
QPushButton *m_attachClearBtn = nullptr; |
|
bool m_pttActive = false; |
|
QString m_voiceFilePath; |
|
QString m_mediaDirBase; |
|
QString m_channelIdForRecord; |
|
QString m_pendingAttachSrc; |
|
QString m_pendingAttachDest; |
|
QString m_pendingAttachName; |
|
qint64 m_pendingAttachSize = 0; |
|
};
|
|
|