@@ -44,7 +44,7 @@ bool PreviewBase::init(IOrganizer *moInfo)
4444 const QStringList& blacklist = m_MOInfo->pluginSetting (name (), " blacklisted_extensions" ).toString ().toLower ().split (' ,' );
4545
4646 // set up image reader to be used for all image types qt (the current installation) supports
47- auto imageReader = std::bind (&PreviewBase::genImagePreview, this , std::placeholders::_1, std::placeholders::_2);
47+ auto imageReader = std::bind (&PreviewBase::genImagePreview, this , std::placeholders::_1, std::placeholders::_2, std::placeholders::_3 );
4848
4949 foreach (const QByteArray & fileType, QImageReader::supportedImageFormats ()) {
5050 auto strFileType = QString (fileType).toLower ();
@@ -56,9 +56,9 @@ bool PreviewBase::init(IOrganizer *moInfo)
5656 m_PreviewGenerators[strFileType] = imageReader;
5757 }
5858
59- const QStringList supportedTextFormats = { " txt" , " ini" , " json" , " log" , " cfg" };
59+ const QStringList supportedTextFormats = { " txt" , " ini" , " json" , " log" , " cfg" , " psc " };
6060
61- auto textReader = std::bind (&PreviewBase::genTxtPreview, this , std::placeholders::_1, std::placeholders::_2);
61+ auto textReader = std::bind (&PreviewBase::genTxtPreview, this , std::placeholders::_1, std::placeholders::_2, std::placeholders::_3 );
6262
6363 foreach (const QString fileType, supportedTextFormats) {
6464
@@ -116,20 +116,31 @@ std::set<QString> PreviewBase::supportedExtensions() const
116116 return extensions;
117117}
118118
119- QWidget *PreviewBase::genFilePreview (const QString &fileName, const QSize &maxSize) const
119+ QWidget* PreviewBase::genFilePreview (const QString &fileName, const QSize &maxSize) const
120+ {
121+ return genDataPreview (nullptr , fileName, maxSize);
122+ }
123+
124+ QWidget* PreviewBase::genDataPreview (const QByteArray& fileData, const QString& fileName,
125+ const QSize& maxSize) const
120126{
121127 auto iter = m_PreviewGenerators.find (QFileInfo (fileName).suffix ().toLower ());
122128 if (iter != m_PreviewGenerators.end ()) {
123- return iter->second (fileName, maxSize);
129+ return iter->second (fileName, maxSize, fileData );
124130 } else {
125131 return nullptr ;
126132 }
127133}
128134
129- QWidget *PreviewBase::genImagePreview (const QString &fileName, const QSize&) const
135+ QWidget *PreviewBase::genImagePreview (const QString &fileName, const QSize&, const QByteArray& fileData ) const
130136{
131137 QLabel *label = new QLabel ();
132- QPixmap pic = QPixmap (fileName);
138+ QPixmap pic;
139+ if (fileData == nullptr ) {
140+ pic = QPixmap (fileName);
141+ } else {
142+ pic.loadFromData (fileData);
143+ }
133144 QSize screenSize = QApplication::primaryScreen ()->geometry ().size ();
134145 // ensure the output image is no more than 80% of the screen height.
135146 // If the aspect ratio is higher than that of the screen this would still allow the image to extend
@@ -142,10 +153,14 @@ QWidget *PreviewBase::genImagePreview(const QString &fileName, const QSize&) con
142153 return label;
143154}
144155
145- QWidget *PreviewBase::genTxtPreview (const QString &fileName, const QSize&) const
156+ QWidget *PreviewBase::genTxtPreview (const QString &fileName, const QSize&, const QByteArray& fileData ) const
146157{
147158 QTextEdit *edit = new QTextEdit ();
148- edit->setText (MOBase::readFileText (fileName));
159+ if (fileData == nullptr ) {
160+ edit->setText (MOBase::readFileText (fileName));
161+ } else {
162+ edit->setText (MOBase::decodeTextData (fileData));
163+ }
149164 edit->setReadOnly (true );
150165 return edit;
151166}
0 commit comments