From c470e49aa9d6c97e805eb193afab97e9e19814eb Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Tue, 16 May 2017 21:21:31 +0300 Subject: Add geometry animation on emoji picker --- src/EmojiPanel.cc | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src/EmojiPanel.cc') diff --git a/src/EmojiPanel.cc b/src/EmojiPanel.cc index afe664f1..4176be0e 100644 --- a/src/EmojiPanel.cc +++ b/src/EmojiPanel.cc @@ -44,8 +44,7 @@ EmojiPanel::EmojiPanel(QWidget *parent) // TODO: Make it MainWindow aware auto main_frame_ = new QFrame(this); - main_frame_->setMinimumSize(370, 350); - main_frame_->setMaximumSize(370, 350); + main_frame_->setMaximumSize(WIDTH, HEIGHT); auto top_layout = new QVBoxLayout(this); top_layout->addWidget(main_frame_); @@ -150,16 +149,26 @@ EmojiPanel::EmojiPanel(QWidget *parent) setLayout(top_layout); - // TODO: Add parallel animation with geometry opacity_ = new QGraphicsOpacityEffect(this); opacity_->setOpacity(1.0); setGraphicsEffect(opacity_); - animation_ = new QPropertyAnimation(opacity_, "opacity", this); - animation_->setDuration(180); - animation_->setStartValue(1.0); - animation_->setEndValue(0.0); + opacity_anim_ = new QPropertyAnimation(opacity_, "opacity", this); + opacity_anim_->setDuration(ANIMATION_DURATION); + opacity_anim_->setStartValue(1); + opacity_anim_->setEndValue(0); + + size_anim_ = new QPropertyAnimation(this); + size_anim_->setTargetObject(main_frame_); + size_anim_->setPropertyName("geometry"); + size_anim_->setDuration(ANIMATION_DURATION); + size_anim_->setStartValue(QRect(0, 0, WIDTH, HEIGHT)); + size_anim_->setEndValue(QRect(ANIMATION_OFFSET, ANIMATION_OFFSET, WIDTH - ANIMATION_OFFSET, HEIGHT - ANIMATION_OFFSET)); + + animation_ = new QParallelAnimationGroup(this); + animation_->addAnimation(opacity_anim_); + animation_->addAnimation(size_anim_); connect(people_emoji, &EmojiCategory::emojiSelected, this, &EmojiPanel::emojiSelected); connect(people_category, &QPushButton::clicked, [this, people_emoji]() { @@ -201,7 +210,7 @@ EmojiPanel::EmojiPanel(QWidget *parent) this->showEmojiCategory(flags_emoji); }); - connect(animation_, &QPropertyAnimation::finished, [this]() { + connect(animation_, &QAbstractAnimation::finished, [this]() { if (animation_->direction() == QAbstractAnimation::Forward) this->hide(); }); -- cgit 1.5.1