OSDN Git Service

Added todo to editor button bar.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / Thumbnailer.java
1 package cx.fbn.nevernote.gui;\r
2 \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
14 \r
15 import cx.fbn.nevernote.Global;\r
16 \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
22     public String guid;\r
23     \r
24     public Thumbnailer(String g, QSize s)\r
25     {\r
26         guid = g;\r
27         finished = new Signal1<String>();\r
28         page = new QWebPage();\r
29         painter = new QPainter();\r
30 \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
34     }\r
35     \r
36     public void setContent(String content) {\r
37         QFile file = new QFile(Global.getFileManager().getResDirPath("thumbnail-" + guid + ".html"));\r
38         file.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.WriteOnly));\r
39         file.write(new QByteArray(content));\r
40         file.close(); \r
41         page.mainFrame().load(new QUrl(QUrl.fromLocalFile(file.fileName()).toString()));\r
42     }\r
43     \r
44 \r
45     \r
46         public void loadFinished(Boolean ok)\r
47     {\r
48                 if (!ok)\r
49                         return;\r
50                 \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
55                 size.setWidth(600);\r
56         if (size.width() > 2000)\r
57                 size.setWidth(600);\r
58    \r
59         page.setViewportSize(size);\r
60         image = new QImage(size, QImage.Format.Format_RGB32);\r
61         painter.begin(image);\r
62 \r
63         page.mainFrame().render(painter);             //<<<< THIS CAN LOCKUP if height too big!!!!\r
64         painter.end();\r
65         \r
66         image.save(Global.getFileManager().getResDirPath("thumbnail-" + guid + ".png"));\r
67         finished.emit(guid);\r
68     }\r
69 }\r