diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-04-06 02:06:42 +0300 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-04-06 02:06:42 +0300 |
commit | 4f45575c791a73e6711583c680f60954de094666 (patch) | |
tree | 8b4b72e2e9a40ed57f9e02cba496a94123c1ea18 /include/RoomInfoListItem.h | |
download | nheko-4f45575c791a73e6711583c680f60954de094666.tar.xz |
Initial commit
Diffstat (limited to 'include/RoomInfoListItem.h')
-rw-r--r-- | include/RoomInfoListItem.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/include/RoomInfoListItem.h b/include/RoomInfoListItem.h new file mode 100644 index 00000000..4eabfa23 --- /dev/null +++ b/include/RoomInfoListItem.h @@ -0,0 +1,93 @@ +/* + * nheko Copyright (C) 2017 Konstantinos Sideris <siderisk@auth.gr> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef ROOMINFOLISTITEM_H +#define ROOMINFOLISTITEM_H + +#include <QtWidgets/QHBoxLayout> +#include <QtWidgets/QLabel> +#include <QtWidgets/QVBoxLayout> +#include <QtWidgets/QWidget> + +#include "Avatar.h" +#include "RippleOverlay.h" +#include "RoomInfo.h" + +class RoomInfoListItem : public QWidget +{ + Q_OBJECT + +public: + RoomInfoListItem(RoomInfo info, QWidget *parent = 0); + ~RoomInfoListItem(); + + inline bool isPressed(); + inline RoomInfo info(); + inline void setAvatar(const QImage &avatar_image); + +signals: + void clicked(RoomInfo info_); + +public slots: + void setPressedState(bool state); + +protected: + void mousePressEvent(QMouseEvent *event) override; + +private: + void setElidedText(QLabel *label, QString text, int width); + + RippleOverlay *ripple_overlay_; + + RoomInfo info_; + + QHBoxLayout *topLayout_; + + QVBoxLayout *avatarLayout_; + QVBoxLayout *textLayout_; + + QWidget *avatarWidget_; + QWidget *textWidget_; + + QLabel *roomName_; + QLabel *roomTopic_; + + Avatar *roomAvatar_; + + QString pressed_style_; + QString normal_style_; + + bool is_pressed_; + int max_height_; +}; + +inline bool RoomInfoListItem::isPressed() +{ + return is_pressed_; +} + +inline RoomInfo RoomInfoListItem::info() +{ + return info_; +} + +inline void RoomInfoListItem::setAvatar(const QImage &avatar_image) +{ + roomAvatar_->setImage(avatar_image); +} + +#endif // ROOMINFOLISTITEM_H |