123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- #include "frmimgshow.h"
- #include "frmalbum.h"
- FrmImgShow::FrmImgShow(QWidget *parent) : QWidget(parent)
- {
- initForm();
- initSignalSlot();
- connect(TCHttpService::getInstance(), &TCHttpService::signal_imageDownloaded,
- this, [this](const QString& requestId, const QPixmap& pixmap){
- if (requestId == m_requestId) {
- // setLoadingState(false);
- qDebug() << "load success";
- setImage(pixmap);
- }
- });
- connect(TCHttpService::getInstance(), &TCHttpService::signal_downloadFailed,
- this, [this](const QString& requestId, const QString& error){
- if (requestId == m_requestId) {
- qDebug() << "load failed";
- }
- });
- }
- void FrmImgShow::loadImage(const QUrl &imageUrl)
- {
- qDebug() << "loadImage";
- m_currentUrl = imageUrl;
- m_requestId = QUuid::createUuid().toString();
- TCHttpService::getInstance()->downloadImage(m_requestId, imageUrl);
- }
- void FrmImgShow::setImage(const QPixmap &pixmap)
- {
- // int h = pixmap.height();
- // int w = pixmap.width();
- // int sh, sw;
- // if (h >= w) {
- // sh = 140;
- // sw = w * h / 140;
- // }
- // else {
- // sw = 140;
- // sh = h * w /140;
- // }
- labImg->setPixmap(pixmap.scaled(this->labImg->width(), this->labImg->height()));
- }
- void FrmImgShow::setLoadingState(bool loading)
- {
- }
- void FrmImgShow::initSignalSlot()
- {
- connect(btnCopy, &QPushButton::clicked, [this](){
- switch(FrmAlbum::getCopyType()) {
- case 0:
- {
- QClipboard* clipboard = QApplication::clipboard();
- QString mdStr = QString("").arg(m_currentUrl.toString());
- clipboard->setText(mdStr);
- break;
- }
- case 1:
- {
- QClipboard* clipboard = QApplication::clipboard();
- QString urlStr = m_currentUrl.toString();
- clipboard->setText(urlStr);
- break;
- }
- case 2:
- {
- QClipboard* clipboard = QApplication::clipboard();
- QString htmlStr = QString("<img src=\"%1\"/>").arg(m_currentUrl.toString());
- clipboard->setText(htmlStr);
- break;
- }
- case 3:
- {
- QClipboard* clipboard = QApplication::clipboard();
- QString ubbStr = QString("[IMG]%1[/IMG]").arg(m_currentUrl.toString());
- clipboard->setText(ubbStr);
- break;
- }
- }
- });
- connect(ckbSelect, &QCheckBox::checkStateChanged, [this](Qt::CheckState state){
- if (state == Qt::Unchecked) {
- emit signal_imageUnselected(m_currentUrl.toString());
- }
- if (state == Qt::Checked) {
- emit signal_imageSelected(m_currentUrl.toString());
- }
- });
- }
- QSize FrmImgShow::sizeHint()
- {
- return QSize(300, 300);
- }
- bool FrmImgShow::eventFilter(QObject *watched, QEvent *event)
- {
- if (watched == btnCopy) {
- if (event->type() == QEvent::Enter) {
- btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_blue.png")));
- return true;
- }
- else if (event->type() == QEvent::Leave) {
- btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
- return true;
- }
- else {
- return false;
- }
- }
- if (watched == btnDelete) {
- if (event->type() == QEvent::Enter) {
- btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_red.png")));
- return true;
- }
- else if (event->type() == QEvent::Leave) {
- btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
- return true;
- }
- else {
- return false;
- }
- }
- return QWidget::eventFilter(watched, event);
- }
- void FrmImgShow::onFinished(QNetworkReply *reply)
- {
- if (reply->error() == QNetworkReply::NoError) {
- QByteArray imageData = reply->readAll();
- QPixmap pix;
- pix.loadFromData(imageData);
- this->labImg->setPixmap(pix);
- }
- }
- void FrmImgShow::initForm()
- {
- this->setWindowFlag(Qt::FramelessWindowHint);
- this->setWindowFlags(this->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
- setAttribute(Qt::WA_TranslucentBackground);
- vLayout = new QVBoxLayout(this);
- setLayout(vLayout);
- labImg = new QLabel();
- btnCopy = new QPushButton();
- btnCopy->setMinimumSize(22, 22);
- btnCopy->setFlat(true);
- btnCopy->setIcon(QIcon(":/qrc/image/copy_white.png"));
- btnCopy->setCursor(Qt::PointingHandCursor);
- btnCopy->installEventFilter(this);
- btnDelete = new QPushButton();
- btnDelete->setMinimumSize(22, 22);
- btnDelete->setFlat(true);
- btnDelete->setIcon(QIcon(":/qrc/image/delete_white.png"));
- btnDelete->installEventFilter(this);
- btnDelete->setCursor(Qt::PointingHandCursor);
- horizenSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- hLayout = new QHBoxLayout();
- ckbSelect = new QCheckBox();
- ckbSelect->setText("");
- ckbSelect->setMinimumSize(20, 20);
- ckbSelect->setCursor(Qt::PointingHandCursor);
- // ckbSelect->setStyleSheet("border:1px solid white;border-radius:5px");
- // ckbSelect->setStyleSheet("border-style:none;background-color:green;spacing:0px;");
- hLayout->addWidget(btnCopy);
- hLayout->addWidget(btnDelete);
- hLayout->setContentsMargins(0, 0, 0, 0);
- hLayout->addSpacerItem(horizenSpacer);
- hLayout->addWidget(ckbSelect);
- hLayout->setSpacing(0);
- vLayout->addWidget(labImg);
- vLayout->addLayout(hLayout);
- vLayout->setContentsMargins(0, 0, 0, 0);
- // btnCopy->setIcon(QIcon(QPixmap(":/qrc/image/copy_white.png")));
- // btnDelete->setIcon(QIcon(QPixmap(":/qrc/image/delete_white.png")));
- // btnCopy->setFixedSize(32, 32);
- // btnCopy->setCursor(Qt::PointingHandCursor);
- setStyleSheet("background-color: #FF0000");
- setFixedSize(134, 160);
- this->labImg->setMinimumSize(130, 130);
- }
- void FrmImgShow::initWidget()
- {
- btnCopy->installEventFilter(this);
- btnDelete->installEventFilter(this);
- }
|