1 package cx.fbn.nevernote.gui;
\r
3 import com.trolltech.qt.core.QByteArray;
\r
4 import com.trolltech.qt.core.QFile;
\r
5 import com.trolltech.qt.core.QIODevice;
\r
6 import com.trolltech.qt.core.QObject;
\r
7 import com.trolltech.qt.core.QSize;
\r
8 import com.trolltech.qt.core.QUrl;
\r
9 import com.trolltech.qt.core.Qt.Orientation;
\r
10 import com.trolltech.qt.core.Qt.ScrollBarPolicy;
\r
11 import com.trolltech.qt.gui.QImage;
\r
12 import com.trolltech.qt.gui.QPainter;
\r
13 import com.trolltech.qt.webkit.QWebPage;
\r
15 import cx.fbn.nevernote.Global;
\r
17 public class Thumbnailer extends QObject {
\r
18 public QWebPage page;
\r
19 public QImage image;
\r
20 public QPainter painter;
\r
21 public Signal1<String> finished;
\r
24 public Thumbnailer(String g, QSize s)
\r
27 finished = new Signal1<String>();
\r
28 page = new QWebPage();
\r
29 painter = new QPainter();
\r
31 page.mainFrame().setScrollBarPolicy(Orientation.Horizontal, ScrollBarPolicy.ScrollBarAlwaysOff);
\r
32 page.mainFrame().setScrollBarPolicy(Orientation.Vertical, ScrollBarPolicy.ScrollBarAlwaysOff);
\r
33 page.loadFinished.connect(this, "loadFinished(Boolean)");
\r
36 public void setContent(String content) {
\r
37 QFile file = new QFile(Global.currentDir+"res/thumbnail-"+guid+".html");
\r
38 file.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.WriteOnly));
\r
39 file.write(new QByteArray(content));
\r
41 page.mainFrame().load(new QUrl(QUrl.fromLocalFile(file.fileName()).toString()));
\r
46 public void loadFinished(Boolean ok)
\r
51 QSize size = page.currentFrame().contentsSize();
\r
52 if (size.height() > 2000)
\r
53 size.setHeight(800);
\r
54 if (size.width() < 600)
\r
56 if (size.width() > 2000)
\r
59 page.setViewportSize(size);
\r
60 image = new QImage(size, QImage.Format.Format_RGB32);
\r
61 painter.begin(image);
\r
63 page.mainFrame().render(painter); //<<<< THIS CAN LOCKUP if height too big!!!!
\r
66 image.save(Global.currentDir+"res/thumbnail-"+guid+".png");
\r
67 finished.emit(guid);
\r