Пример #1
0
void PhotoSendBox::paintEvent(QPaintEvent *e) {
	QPainter p(this);
	p.setOpacity(a_opacity.current());
	
	// fill bg
	p.fillRect(QRect(QPoint(0, 0), size()), st::boxBG->b);

	// paint shadows
	p.fillRect(0, _height - st::btnSelectCancel.height - st::scrollDef.bottomsh, _width, st::scrollDef.bottomsh, st::scrollDef.shColor->b);

	// paint button sep
	p.fillRect(st::btnSelectCancel.width, _height - st::btnSelectCancel.height, st::lineWidth, st::btnSelectCancel.height, st::btnSelectSep->b);

	p.setFont(st::boxFont->f);
	p.setPen(st::boxGrayTitle->p);
	if (_img && _img->type == ToPreparePhoto) {
		p.drawText(QRect(st::boxPadding.left(), st::boxPadding.top(), _width - st::boxPadding.left() - st::boxPadding.right(), st::boxFont->height), lang(lng_really_send_image), style::al_center);
		p.drawPixmap((_width - _thumbw) / 2, st::boxPadding.top() * 2 + st::boxFont->height, _thumb);
	} else {
		p.drawText(QRect(st::boxPadding.left(), st::boxPadding.top(), _width - st::boxPadding.left() - st::boxPadding.right(), st::boxFont->height), lang(_img ? lng_really_send_file : lng_really_share_contact), style::al_center);

		int32 w = _width - st::boxPadding.left() - st::boxPadding.right(), h = st::mediaPadding.top() + st::mediaThumbSize + st::mediaPadding.bottom();
		int32 tleft = st::mediaPadding.left() + st::mediaThumbSize + st::mediaPadding.right();
		int32 twidth = w - tleft - st::mediaPadding.right();
		if (twidth > _textw) {
			w -= (twidth - _textw);
			twidth = _textw;
		}
		int32 x = (_width - w) / 2, y = st::boxPadding.top() * 2 + st::boxFont->height;

		p.fillRect(QRect(x, y, w, h), st::msgOutBG->b);
		p.fillRect(x, y + h, w, st::msgShadow, st::msgOutShadow->b);
		if (_thumbw) {
			int32 rf(cIntRetinaFactor());
			p.drawPixmap(QPoint(x + st::mediaPadding.left(), y + st::mediaPadding.top()), _thumb, QRect(_thumbx * rf, _thumby * rf, st::mediaThumbSize * rf, st::mediaThumbSize * rf));
		} else if (_img) {
			p.drawPixmap(QPoint(x + st::mediaPadding.left(), y + st::mediaPadding.top()), App::sprite(), st::mediaDocOutImg);
		} else {
			p.drawPixmap(x + st::mediaPadding.left(), y + st::mediaPadding.top(), userDefPhoto(1)->pix(st::mediaThumbSize));
		}

		p.setFont(st::mediaFont->f);
		p.setPen(st::black->c);
		if (twidth < _namew) {
			p.drawText(x + tleft, y + st::mediaPadding.top() + st::mediaNameTop + st::mediaFont->ascent, st::mediaFont->m.elidedText(_name, Qt::ElideRight, twidth));
		} else {
			p.drawText(x + tleft, y + st::mediaPadding.top() + st::mediaNameTop + st::mediaFont->ascent, _name);
		}

		p.setPen(st::mediaOutColor->p);
		p.drawText(x + tleft, y + st::mediaPadding.top() + st::mediaThumbSize - st::mediaDetailsShift - st::mediaFont->descent, _size);
	}
}
Пример #2
0
void PhotoSendBox::paintEvent(QPaintEvent *e) {
	Painter p(this);
	if (paint(p)) return;

	// paint shadow
	p.fillRect(0, height() - st::btnSelectCancel.height - st::scrollDef.bottomsh, width(), st::scrollDef.bottomsh, st::scrollDef.shColor->b);

	// paint button sep
	p.fillRect(st::btnSelectCancel.width, height() - st::btnSelectCancel.height, st::lineWidth, st::btnSelectCancel.height, st::btnSelectSep->b);

	if (_img && _img->type == ToPreparePhoto) {
		paintGrayTitle(p, lang(lng_really_send_image));
		p.drawPixmap((width() - _thumbw) / 2, st::boxPadding.top() * 2 + st::boxFont->height, _thumb);
	} else {
		paintGrayTitle(p, lang(_img ? lng_really_send_file : lng_really_share_contact));

		int32 w = width() - st::boxPadding.left() - st::boxPadding.right(), h = st::mediaPadding.top() + st::mediaThumbSize + st::mediaPadding.bottom();
		int32 tleft = st::mediaPadding.left() + st::mediaThumbSize + st::mediaPadding.right();
		int32 twidth = w - tleft - st::mediaPadding.right();
		if (twidth > _textw) {
			w -= (twidth - _textw);
			twidth = _textw;
		}
		int32 x = (width() - w) / 2, y = st::boxPadding.top() * 2 + st::boxFont->height;

		App::roundRect(p, x, y, w, h, st::msgOutBg, MessageOutCorners, &st::msgOutShadow);
		if (_thumbw) {
			int32 rf(cIntRetinaFactor());
			p.drawPixmap(QPoint(x + st::mediaPadding.left(), y + st::mediaPadding.top()), _thumb, QRect(_thumbx * rf, _thumby * rf, st::mediaThumbSize * rf, st::mediaThumbSize * rf));
		} else if (_img) {
			p.drawPixmap(QPoint(x + st::mediaPadding.left(), y + st::mediaPadding.top()), App::sprite(), st::mediaDocOutImg);
		} else {
			p.drawPixmap(x + st::mediaPadding.left(), y + st::mediaPadding.top(), userDefPhoto(1)->pix(st::mediaThumbSize));
		}

		p.setFont(st::mediaFont->f);
		p.setPen(st::black->c);
		if (twidth < _namew) {
			p.drawText(x + tleft, y + st::mediaPadding.top() + st::mediaNameTop + st::mediaFont->ascent, st::mediaFont->elided(_name, twidth));
		} else {
			p.drawText(x + tleft, y + st::mediaPadding.top() + st::mediaNameTop + st::mediaFont->ascent, _name);
		}

		p.setPen(st::mediaOutColor->p);
		p.drawText(x + tleft, y + st::mediaPadding.top() + st::mediaThumbSize - st::mediaDetailsShift - st::mediaFont->descent, _size);
	}
}
Пример #3
0
QPixmap ItemBase::getResultContactAvatar(int width, int height) const {
	if (_result->_type == Result::Type::Contact) {
		return userDefPhoto(qHash(_result->_id) % UserColorsCount)->pixCircled(width, height);
	}
	return QPixmap();
}