some methods to cVard
This commit is contained in:
parent
e7be046e9f
commit
c4d22c9c14
@ -19,19 +19,13 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
|
|
||||||
Image::Image(const QString& path, QWidget* parent):
|
Image::Image(const QString& path, quint16 p_minWidth, QWidget* parent):
|
||||||
QLabel(parent),
|
QLabel(parent),
|
||||||
pixmap(path),
|
pixmap(path),
|
||||||
aspectRatio(0)
|
aspectRatio(0),
|
||||||
|
minWidth(p_minWidth)
|
||||||
{
|
{
|
||||||
|
|
||||||
qreal height = pixmap.height();
|
|
||||||
qreal width = pixmap.width();
|
|
||||||
aspectRatio = width / height;
|
|
||||||
setPixmap(pixmap);
|
|
||||||
setScaledContents(true);
|
setScaledContents(true);
|
||||||
setMinimumHeight(50 / aspectRatio);
|
|
||||||
setMinimumWidth(50);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Image::~Image()
|
Image::~Image()
|
||||||
@ -42,7 +36,6 @@ Image::~Image()
|
|||||||
int Image::heightForWidth(int width) const
|
int Image::heightForWidth(int width) const
|
||||||
{
|
{
|
||||||
int height = width / aspectRatio;
|
int height = width / aspectRatio;
|
||||||
//qDebug() << height << width << aspectRatio;
|
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,3 +43,27 @@ bool Image::hasHeightForWidth() const
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Image::recalculateAspectRatio()
|
||||||
|
{
|
||||||
|
qreal height = pixmap.height();
|
||||||
|
qreal width = pixmap.width();
|
||||||
|
aspectRatio = width / height;
|
||||||
|
setPixmap(pixmap);
|
||||||
|
setMinimumHeight(minWidth / aspectRatio);
|
||||||
|
setMinimumWidth(minWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Image::setMinWidth(quint16 p_minWidth)
|
||||||
|
{
|
||||||
|
if (minWidth != p_minWidth) {
|
||||||
|
minWidth = p_minWidth;
|
||||||
|
recalculateAspectRatio();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Image::setPath(const QString& path)
|
||||||
|
{
|
||||||
|
pixmap = QPixmap(path);
|
||||||
|
recalculateAspectRatio();
|
||||||
|
}
|
||||||
|
@ -28,34 +28,22 @@
|
|||||||
class Image : public QLabel
|
class Image : public QLabel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
Image(const QString& path, quint16 minWidth = 50, QWidget* parent = nullptr);
|
||||||
* Default constructor
|
|
||||||
*/
|
|
||||||
Image(const QString& path, QWidget* parent = nullptr);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Destructor
|
|
||||||
*/
|
|
||||||
~Image();
|
~Image();
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo write docs
|
|
||||||
*
|
|
||||||
* @param TODO
|
|
||||||
* @return TODO
|
|
||||||
*/
|
|
||||||
int heightForWidth(int width) const override;
|
int heightForWidth(int width) const override;
|
||||||
|
bool hasHeightForWidth() const override;
|
||||||
/**
|
void setPath(const QString& path);
|
||||||
* @todo write docs
|
void setMinWidth(quint16 minWidth);
|
||||||
*
|
|
||||||
* @return TODO
|
|
||||||
*/
|
|
||||||
virtual bool hasHeightForWidth() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPixmap pixmap;
|
QPixmap pixmap;
|
||||||
qreal aspectRatio;
|
qreal aspectRatio;
|
||||||
|
quint16 minWidth;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void recalculateAspectRatio();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // IMAGE_H
|
#endif // IMAGE_H
|
||||||
|
@ -19,13 +19,74 @@
|
|||||||
#include "vcard.h"
|
#include "vcard.h"
|
||||||
#include "ui_vcard.h"
|
#include "ui_vcard.h"
|
||||||
|
|
||||||
VCard::VCard(QWidget* parent):
|
VCard::VCard(bool edit, QWidget* parent):
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
m_ui(new Ui::VCard())
|
m_ui(new Ui::VCard()),
|
||||||
|
avatar(":/images/logo.svg", 64)
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
|
if (edit) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
m_ui->buttonBox->hide();
|
||||||
|
m_ui->firstName->setReadOnly(true);
|
||||||
|
m_ui->middleName->setReadOnly(true);
|
||||||
|
m_ui->lastName->setReadOnly(true);
|
||||||
|
m_ui->nickName->setReadOnly(true);
|
||||||
|
m_ui->birthday->setReadOnly(true);
|
||||||
|
m_ui->organizationName->setReadOnly(true);
|
||||||
|
m_ui->organizationDepartment->setReadOnly(true);
|
||||||
|
m_ui->organizationTitle->setReadOnly(true);
|
||||||
|
m_ui->organizationRole->setReadOnly(true);
|
||||||
|
m_ui->description->setReadOnly(true);
|
||||||
|
m_ui->jabberID->setReadOnly(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &VCard::onButtonBoxAccepted);
|
||||||
|
connect(m_ui->buttonBox, &QDialogButtonBox::rejected, m_ui->buttonBox, &QDialogButtonBox::deleteLater);
|
||||||
}
|
}
|
||||||
|
|
||||||
VCard::~VCard()
|
VCard::~VCard()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VCard::setVCard(const QString& jid, const Shared::VCard& card)
|
||||||
|
{
|
||||||
|
m_ui->jabberID->setText(jid);
|
||||||
|
m_ui->firstName->setText(card.getFirstName());
|
||||||
|
m_ui->middleName->setText(card.getMiddleName());
|
||||||
|
m_ui->lastName->setText(card.getLastName());
|
||||||
|
m_ui->nickName->setText(card.getNickName());
|
||||||
|
m_ui->birthday->setDate(card.getBirthday());
|
||||||
|
//m_ui->organizationName->setText(card.get());
|
||||||
|
//m_ui->organizationDepartment->setText(card.get());
|
||||||
|
//m_ui->organizationTitle->setText(card.get());
|
||||||
|
//m_ui->organizationRole->setText(card.get());
|
||||||
|
m_ui->description->setText(card.getDescription());
|
||||||
|
|
||||||
|
QString path;
|
||||||
|
switch (card.getAvatarType()) {
|
||||||
|
case Shared::Avatar::empty:
|
||||||
|
path = QApplication::palette().window().color().lightnessF() > 0.5 ? ":/images/fallback/dark/big/user.svg" : ":/images/fallback/light/big/user.svg";
|
||||||
|
break;
|
||||||
|
case Shared::Avatar::autocreated:
|
||||||
|
case Shared::Avatar::valid:
|
||||||
|
path = card.getAvatarPath();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
avatar.setPath(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VCard::onButtonBoxAccepted()
|
||||||
|
{
|
||||||
|
Shared::VCard card;
|
||||||
|
card.setFirstName(m_ui->firstName->text());
|
||||||
|
card.setMiddleName(m_ui->middleName->text());
|
||||||
|
card.setLastName(m_ui->lastName->text());
|
||||||
|
card.setNickName(m_ui->nickName->text());
|
||||||
|
card.setBirthday(m_ui->birthday->date());
|
||||||
|
card.setDescription(m_ui->description->toPlainText());
|
||||||
|
|
||||||
|
emit saveVCard(m_ui->jabberID->text(), card);
|
||||||
|
}
|
||||||
|
@ -22,6 +22,9 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
|
|
||||||
|
#include "../../global.h"
|
||||||
|
#include "../utils/image.h"
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
{
|
{
|
||||||
class VCard;
|
class VCard;
|
||||||
@ -34,11 +37,20 @@ class VCard : public QWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
VCard(QWidget* parent = nullptr);
|
VCard(bool edit = false, QWidget* parent = nullptr);
|
||||||
~VCard();
|
~VCard();
|
||||||
|
|
||||||
|
void setVCard(const QString& jid, const Shared::VCard& card);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void saveVCard(const QString& jid, const Shared::VCard& card);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onButtonBoxAccepted();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<Ui::VCard> m_ui;
|
QScopedPointer<Ui::VCard> m_ui;
|
||||||
|
Image avatar;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VCARD_H
|
#endif // VCARD_H
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>434</width>
|
<width>544</width>
|
||||||
<height>534</height>
|
<height>534</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -49,7 +49,7 @@
|
|||||||
<property name="tabBarAutoHide">
|
<property name="tabBarAutoHide">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="General" native="true">
|
<widget class="QWidget" name="General">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>General</string>
|
<string>General</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
@ -433,7 +433,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="Contact" native="true">
|
<widget class="QWidget" name="Contact">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Contact</string>
|
<string>Contact</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
@ -479,7 +479,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>422</width>
|
<width>532</width>
|
||||||
<height>410</height>
|
<height>410</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -546,6 +546,29 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineEdit">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="urlLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Web site</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="7" column="1">
|
||||||
|
Loading…
Reference in New Issue
Block a user