-#include <QtDeclarative>\r
-#include <QtMaemo5>\r
-#include <QtGui/QX11Info>\r
-#include <X11/Xlib.h>\r
-#include <X11/Xatom.h>\r
-#include <X11/Xutil.h>\r
-#include "quickwidget.hpp"\r
-\r
-#define SETTING_QUICK_FILE "QuickWidgetFile"\r
-#define SETTING_QUICK_SIZE "QuickWidgetSize"\r
-#define SETTING_SAVE_WAITINTERVAL 3000\r
-\r
-static Atom onCurrentHomescreenAtom;\r
-static bool _atomsInitialized = false;\r
-\r
-QuickWidget *QuickWidget::createAndShowNew(const QString& fileName, const QSize& size)\r
-{\r
- QuickWidget *widget = new QuickWidget;\r
- widget->initView(fileName, size);\r
- widget->show();\r
- QeMaemo5DynamicWidgetHelper::globalInstance()->registerWidget(widget);\r
- return widget;\r
-}\r
-\r
-void QuickWidget::initView(const QString& fileName, const QSize& size)\r
-{\r
- size_ = size;\r
- saveSetting(SETTING_QUICK_FILE, fileName);\r
- saveSetting(SETTING_QUICK_SIZE, size_);\r
- view_->setSource(QUrl::fromLocalFile(fileName));\r
- if ( view_->status() == QDeclarativeView::Error) {\r
- errorWidget();\r
- }\r
- else if (size_.isValid())\r
- {\r
- // use given fixed size and scale to it\r
- qDebug() << "scaling";\r
- view_->setResizeMode(QDeclarativeView::SizeRootObjectToView);\r
- }\r
- else\r
- {\r
- size_ = view_->sceneRect().size().toSize();\r
- }\r
- view_->setFixedSize(size_);\r
- view_->show();\r
-}\r
-\r
-\r
-QuickWidget::QuickWidget(QWidget *parent)\r
- : QeMaemo5DynamicHomescreenWidget(true, parent),\r
- size_(QSize()),\r
- view_(0)\r
-{\r
- if (!_atomsInitialized) {\r
- onCurrentHomescreenAtom = XInternAtom(QX11Info::display(),\r
- "_HILDON_APPLET_ON_CURRENT_DESKTOP",\r
- false);\r
- _atomsInitialized = true;\r
- }\r
- view_ = new QDeclarativeView(this);\r
- view_->setStyleSheet("background:transparent");\r
- view_->setAttribute(Qt::WA_TranslucentBackground);\r
- wrapper_ = new QuickWidgetWrapper(this);\r
- view_->rootContext()->setContextProperty("runtime", wrapper_);\r
-\r
-}\r
-\r
-QuickWidget::~QuickWidget()\r
-{\r
- delete wrapper_;\r
-}\r
-\r
-bool QuickWidget::x11Event(XEvent *event)\r
-{\r
- bool passon = QeMaemo5DynamicHomescreenWidget::x11Event(event);\r
-\r
- if (event->xclient.message_type == onCurrentHomescreenAtom)\r
- {\r
- bool visible = isVisibleOnCurrentHomescreen() ;\r
- if (visible != wrapper_->onHomeScreen())\r
- {\r
- wrapper_->setOnHomeScreen(visible);\r
- }\r
- }\r
- return passon;\r
-}\r
-\r
-bool QuickWidget::restoreWidgetState()\r
-{\r
- QString fileName = loadSetting(SETTING_QUICK_FILE).toString();\r
- QSize size = loadSetting(SETTING_QUICK_SIZE, QSize()).value<QSize>();\r
- initView(fileName, size);\r
- return true;\r
-}\r
-\r
-void QuickWidget::errorWidget()\r
-{\r
- const QList<QDeclarativeError>& errs = view_->errors();\r
- qDebug() << errs;\r
- QByteArray errmsg;\r
- QTextStream qts(&errmsg);\r
- qts << "import Qt 4.7" << endl\r
- << "Rectangle { width: 200; height: txt.height; color: \"#ff0000\"; radius: 8" << endl\r
- << "Text { id: txt; anchors.centerIn: parent; text: \"";\r
- for (int i = 0; i < errs.size(); ++i) {\r
- qts << errs.at(i).toString().replace(QString("\""), QString("\\\"")) <<\r
-endl;\r
- }\r
- qts << "\"; font.pixelSize: 15; wrapMode: Text.Wrap; width: parent.width-20}" << endl\r
- << "}" << endl;\r
- qDebug() << errmsg;\r
- QDeclarativeComponent component(view_->engine());\r
- component.setData(errmsg, QUrl());\r
- qDebug() << component.errorString();\r
- QDeclarativeItem *errwdgt =\r
- qobject_cast<QDeclarativeItem*>(component.create(view_->rootContext()));\r
- view_->scene()->addItem(errwdgt);\r
- size_ = QSize(errwdgt->width(), errwdgt->height());\r
-}\r
+#include <QtDeclarative>
+#include <QtMaemo5>
+#include <QtGui/QX11Info>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include "quickwidget.hpp"
+
+#define SETTING_QUICK_FILE "QuickWidgetFile"
+#define SETTING_QUICK_SIZE "QuickWidgetSize"
+#define SETTING_SAVE_WAITINTERVAL 3000
+
+static Atom onCurrentHomescreenAtom;
+static bool _atomsInitialized = false;
+
+QuickWidget *QuickWidget::createAndShowNew(const QString& fileName,
+ const QSize& size)
+{
+ QuickWidget *widget = new QuickWidget;
+ widget->initView(fileName, size);
+ widget->show();
+ QeMaemo5DynamicWidgetHelper::globalInstance()->registerWidget(widget);
+ return widget;
+}
+
+void QuickWidget::initView(const QString& fileName, const QSize& size)
+{
+ size_ = size;
+ saveSetting(SETTING_QUICK_FILE, fileName);
+ saveSetting(SETTING_QUICK_SIZE, size_);
+ view_->setSource(QUrl::fromLocalFile(fileName));
+ if ( view_->status() == QDeclarativeView::Error) {
+ errorWidget();
+ }
+ else if (size_.isValid())
+ {
+ // use given fixed size and scale to it
+ qDebug() << "scaling";
+ view_->setResizeMode(QDeclarativeView::SizeRootObjectToView);
+ }
+ else
+ {
+ size_ = view_->sceneRect().size().toSize();
+ }
+ connect(view_, SIGNAL(sceneResized(QSize)), this, SLOT(resizer(QSize)));
+
+ view_->resize(size_);
+ view_->show();
+}
+
+QuickWidget::QuickWidget(QWidget *parent)
+ : QeMaemo5DynamicHomescreenWidget(true, parent),
+ size_(QSize()),
+ view_(0)
+{
+ if (!_atomsInitialized) {
+ onCurrentHomescreenAtom = XInternAtom(QX11Info::display(),
+ "_HILDON_APPLET_ON_CURRENT_DESKTOP",
+ false);
+ _atomsInitialized = true;
+ }
+ //layout()->setSizeConstraint(QLayout::SetNoConstraint);
+ view_ = new QDeclarativeView(this);
+ view_->engine()->addImportPath(QString("/opt/qtm12/imports"));
+ view_->setStyleSheet("background:transparent");
+ view_->setAttribute(Qt::WA_TranslucentBackground);
+ wrapper_ = new QuickWidgetWrapper(this);
+ view_->rootContext()->setContextProperty("runtime", wrapper_);
+}
+
+QuickWidget::~QuickWidget()
+{
+ delete wrapper_;
+}
+
+bool QuickWidget::x11Event(XEvent *event)
+{
+ bool passon = QeMaemo5DynamicHomescreenWidget::x11Event(event);
+
+ if (event->xclient.message_type == onCurrentHomescreenAtom)
+ {
+ bool visible = isVisibleOnCurrentHomescreen() ;
+ if (visible != wrapper_->onHomeScreen())
+ {
+ wrapper_->setOnHomeScreen(visible);
+ }
+ }
+ return passon;
+}
+
+bool QuickWidget::restoreWidgetState()
+{
+ QString fileName = loadSetting(SETTING_QUICK_FILE).toString();
+ QSize size = loadSetting(SETTING_QUICK_SIZE, QSize()).value<QSize>();
+ initView(fileName, size);
+ return true;
+}
+
+void QuickWidget::errorWidget()
+{
+ const QList<QDeclarativeError>& errs = view_->errors();
+ qDebug() << errs;
+ QByteArray errmsg;
+ QTextStream qts(&errmsg);
+ qts << "import Qt 4.7" << endl
+ << "Rectangle { width: 200; height: txt.height; color: \"#ff0000\"; radius: 8" << endl
+ << "Text { id: txt; anchors.centerIn: parent; text: \"";
+ for (int i = 0; i < errs.size(); ++i) {
+ qts << errs.at(i).toString().replace(QString("\""), QString("\\\"")) <<
+endl;
+ }
+ qts << "\"; font.pixelSize: 15; wrapMode: Text.Wrap; width: parent.width-20}" << endl
+ << "}" << endl;
+ qDebug() << errmsg;
+ QDeclarativeComponent component(view_->engine());
+ component.setData(errmsg, QUrl());
+ qDebug() << component.errorString();
+ QDeclarativeItem *errwdgt =
+ qobject_cast<QDeclarativeItem*>(component.create(view_->rootContext()));
+ view_->scene()->addItem(errwdgt);
+ size_ = QSize(errwdgt->width(), errwdgt->height());
+}
+
+void QuickWidget::paintEvent(QPaintEvent *event)
+{
+ QWidget::paintEvent(event);
+}
+
+void QuickWidget::resizer( QSize size)
+{
+ if (size_.isValid())
+ {
+ resize(size);
+ }
+}
+