From 3d15682b370b5cd57baaec0b598a7b7656f7e588 Mon Sep 17 00:00:00 2001 From: blue Date: Wed, 19 Jun 2019 17:15:20 +0300 Subject: [PATCH] fancy shadows in conversations --- ui/conversation.cpp | 27 +++ ui/conversation.h | 1 + ui/conversation.ui | 398 ++++++++++++++++++++++++++++++-------------- ui/messageline.cpp | 11 +- 4 files changed, 307 insertions(+), 130 deletions(-) diff --git a/ui/conversation.cpp b/ui/conversation.cpp index fdce53f..3e7493a 100644 --- a/ui/conversation.cpp +++ b/ui/conversation.cpp @@ -21,6 +21,7 @@ #include #include #include +#include Conversation::Conversation(Models::Contact* p_contact, QWidget* parent): QWidget(parent), @@ -63,12 +64,38 @@ Conversation::Conversation(Models::Contact* p_contact, QWidget* parent): vs->setBackgroundRole(QPalette::Base); vs->setAutoFillBackground(true); connect(vs, SIGNAL(valueChanged(int)), this, SLOT(onSliderValueChanged(int))); + + applyVisualEffects(); } Conversation::~Conversation() { } +void Conversation::applyVisualEffects() +{ + QGraphicsDropShadowEffect *e1 = new QGraphicsDropShadowEffect; + e1->setBlurRadius(10); + e1->setXOffset(0); + e1->setYOffset(-2); + e1->setColor(Qt::black); + m_ui->bl->setGraphicsEffect(e1); + + QGraphicsDropShadowEffect *e2 = new QGraphicsDropShadowEffect; + e2->setBlurRadius(7); + e2->setXOffset(0); + e2->setYOffset(2); + e2->setColor(Qt::black); + m_ui->ul->setGraphicsEffect(e2); + + QGraphicsDropShadowEffect *e3 = new QGraphicsDropShadowEffect; + e3->setBlurRadius(10); + e3->setXOffset(0); + e3->setYOffset(2); + e3->setColor(Qt::black); + m_ui->ut->setGraphicsEffect(e3); +} + void Conversation::setName(const QString& name) { m_ui->nameLabel->setText(name); diff --git a/ui/conversation.h b/ui/conversation.h index f91bac3..310c0a0 100644 --- a/ui/conversation.h +++ b/ui/conversation.h @@ -68,6 +68,7 @@ protected: void setState(Shared::Availability state); void setStatus(const QString& status); void setName(const QString& name); + void applyVisualEffects(); protected slots: void onContactChanged(Models::Item* item, int row, int col); diff --git a/ui/conversation.ui b/ui/conversation.ui index de6604e..142df37 100644 --- a/ui/conversation.ui +++ b/ui/conversation.ui @@ -7,7 +7,7 @@ 0 0 572 - 377 + 485 @@ -70,56 +70,98 @@ 0 - - - - - - - - - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - - - - - + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 2 + + + + + 0 + 2 + + + + true + + @@ -129,9 +171,18 @@ QFrame::NoFrame + + 0 + + + 0 + Qt::ScrollBarAlwaysOff + + QAbstractScrollArea::AdjustToContents + true @@ -141,7 +192,7 @@ 0 0 572 - 95 + 111 @@ -164,7 +215,42 @@ + + + + + 0 + 0 + + + + + 0 + 2 + + + + + 16777215 + 2 + + + + + 0 + 2 + + + + true + + + + scrollArea + bl + ul + widget_3 @@ -173,6 +259,9 @@ 0 + + true + 0 @@ -190,83 +279,131 @@ 0 - - - - - - - - - .. - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - .. - - - true - - - - - - - - - - - .. - - - true - - - - - - - - 0 - 0 - - - - - - - - .. - - - true - - - - + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + .. + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + .. + + + true + + + + + + + + + + + .. + + + true + + + + + + + + 0 + 0 + + + + + + + + .. + + + true + + + + + + + + + + + 0 + 0 + + + + + 0 + 2 + + + + + 16777215 + 2 + + + + + 0 + 2 + + + + true + + @@ -294,6 +431,9 @@ + messageEditor + ut + panel diff --git a/ui/messageline.cpp b/ui/messageline.cpp index 6920ee0..f421e72 100644 --- a/ui/messageline.cpp +++ b/ui/messageline.cpp @@ -18,6 +18,7 @@ #include "messageline.h" #include +#include MessageLine::MessageLine(QWidget* parent): QWidget(parent), @@ -72,7 +73,7 @@ MessageLine::Position MessageLine::message(const Shared::Message& msg) QWidget* message = new QWidget(); message->setLayout(vBox); message->setBackgroundRole(QPalette::AlternateBase); - message->setAutoFillBackground(true);; + message->setAutoFillBackground(true); QLabel* body = new QLabel(msg.getBody()); body->setTextInteractionFlags(body->textInteractionFlags() | Qt::TextSelectableByMouse); @@ -93,6 +94,14 @@ MessageLine::Position MessageLine::message(const Shared::Message& msg) vBox->addWidget(body); vBox->addWidget(time); + QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect; + effect->setBlurRadius(10); + effect->setXOffset(1); + effect->setYOffset(1); + effect->setColor(Qt::black); + + message->setGraphicsEffect(effect); + if (msg.getOutgoing()) { //body->setAlignment(Qt::AlignRight); sender->setAlignment(Qt::AlignRight);