Warning, file /rolisteam/rolisteam/src/libraries/rwidgets/editors/mtextedit.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 #include "mtextedit.h"
0002 #include <QBuffer>
0003 #include <QByteArray>
0004 #include <QImage>
0005 #include <QTextCursor>
0006 #include <QTextDocument>
0007 #include <stdlib.h>
0008 
0009 MTextEdit::MTextEdit(QWidget* parent) : QTextEdit(parent) {}
0010 
0011 bool MTextEdit::canInsertFromMimeData(const QMimeData* source) const
0012 {
0013     return source->hasImage() || QTextEdit::canInsertFromMimeData(source);
0014 }
0015 
0016 void MTextEdit::insertFromMimeData(const QMimeData* source)
0017 {
0018     if(source->hasImage())
0019     {
0020         QStringList formats= source->formats();
0021         QString format;
0022         for(int i= 0; i < formats.size(); i++)
0023         {
0024             if(formats[i] == "image/bmp")
0025             {
0026                 format= "BMP";
0027                 break;
0028             }
0029             if(formats[i] == "image/jpeg")
0030             {
0031                 format= "JPG";
0032                 break;
0033             }
0034             if(formats[i] == "image/jpg")
0035             {
0036                 format= "JPG";
0037                 break;
0038             }
0039             if(formats[i] == "image/gif")
0040             {
0041                 format= "GIF";
0042                 break;
0043             }
0044             if(formats[i] == "image/png")
0045             {
0046                 format= "PNG";
0047                 break;
0048             }
0049             if(formats[i] == "image/pbm")
0050             {
0051                 format= "PBM";
0052                 break;
0053             }
0054             if(formats[i] == "image/pgm")
0055             {
0056                 format= "PGM";
0057                 break;
0058             }
0059             if(formats[i] == "image/ppm")
0060             {
0061                 format= "PPM";
0062                 break;
0063             }
0064             if(formats[i] == "image/tiff")
0065             {
0066                 format= "TIFF";
0067                 break;
0068             }
0069             if(formats[i] == "image/xbm")
0070             {
0071                 format= "XBM";
0072                 break;
0073             }
0074             if(formats[i] == "image/xpm")
0075             {
0076                 format= "XPM";
0077                 break;
0078             }
0079         }
0080         if(!format.isEmpty())
0081         {
0082             //          dropImage(qvariant_cast<QImage>(source->imageData()), format);
0083             dropImage(qvariant_cast<QImage>(source->imageData()), "JPG"); // Sorry, ale cokoli jiného dlouho trvá
0084             return;
0085         }
0086     }
0087     QTextEdit::insertFromMimeData(source);
0088 }
0089 
0090 QMimeData* MTextEdit::createMimeDataFromSelection() const
0091 {
0092     return QTextEdit::createMimeDataFromSelection();
0093 }
0094 
0095 void MTextEdit::dropImage(const QImage& image, const QString& format)
0096 {
0097     QByteArray bytes;
0098     QBuffer buffer(&bytes);
0099     buffer.open(QIODevice::WriteOnly);
0100     image.save(&buffer, format.toLocal8Bit().data());
0101     buffer.close();
0102     QByteArray base64= bytes.toBase64();
0103     QByteArray base64l;
0104     for(int i= 0; i < base64.size(); i++)
0105     {
0106         base64l.append(base64[i]);
0107         if(i % 80 == 0)
0108         {
0109             base64l.append("\n");
0110         }
0111     }
0112 
0113     QTextCursor cursor= textCursor();
0114     QTextImageFormat imageFormat;
0115     imageFormat.setWidth(image.width());
0116     imageFormat.setHeight(image.height());
0117     imageFormat.setName(
0118         QString("data:image/%1;base64,%2").arg(QString("%1.%2").arg(rand()).arg(format), base64l.data()));
0119     cursor.insertImage(imageFormat);
0120 }