Commit latest bug fixes
authormar637 <mar637@loki.(none)>
Fri, 11 Mar 2011 04:54:31 +0000 (15:54 +1100)
committermar637 <mar637@loki.(none)>
Fri, 11 Mar 2011 04:54:31 +0000 (15:54 +1100)
debian/changelog
debian/dirs
debian/rules
main.cpp
plugins/qmlprocess/ProcessObject.cpp
plugins/qmlprocess/qmldir [deleted file]
quick-widgets.pro
quickwidget.cpp
quickwidget.hpp

index 11ce80f..65799f0 100644 (file)
@@ -1,8 +1,24 @@
-quick-widgets (0.1.1) unstable; urgency=low
+quick-widgets (0.2.2) unstable; urgency=low
+
+  * added unicode support for standard output
+
+ -- Malte Marquarding <malte@marquarding.com>  Fri, 11 Mar 2011 15:50:44 +1100
+
+quick-widgets (0.2.1) unstable; urgency=low
+
+  * fixed examples installation failure
+
+ -- Malte Marquarding <malte@marquarding.com>  Mon, 22 Nov 2010 16:06:35 +1100
+
+quick-widgets (0.2.0) unstable; urgency=low
+
   * Packaging changes
+  * added "quickwidgets Process" qml plugin
+  * added example for plugin
+  * make widget auto-resize from qml content
+  * do not draw widget background, let qml handle this
 
- -- Malte Marquarding <malte@marquarding.com>  Thu, 18 Nov 2010 10:27:43 +1100
+ -- Malte Marquarding <malte@marquarding.com>  Mon, 22 Nov 2010 14:46:21 +1100
 
 quick-widgets (0.1.0) unstable; urgency=low
  
index 04f51e1..a5f186d 100644 (file)
@@ -1,4 +1,5 @@
 opt/quick-widgets
+opt/quick-widgets/examples
 usr/share/applications/hildon
 usr/share/pixmaps
 etc/event.d
index e0e6660..f1a5ee4 100755 (executable)
@@ -55,6 +55,7 @@ install: build
        cp "$(CURDIR)/data/quick-widgets" "$(CURDIR)/debian/quick-widgets/etc/event.d/"
        cp "$(CURDIR)/data/quick-widgets.desktop" "$(CURDIR)/debian/quick-widgets/usr/share/applications/hildon/"
        cp "$(CURDIR)/data/quick-widgets.png" "$(CURDIR)/debian/quick-widgets/usr/share/pixmaps/"
+       cp "$(CURDIR)/data/process.qml" "$(CURDIR)/debian/quick-widgets/opt/quick-widgets/examples"
 
 
 # Build architecture-independent files here.
index 082d8b8..24a201f 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1,61 +1,66 @@
-#include <QApplication>\r
-#include <q-extras/qemaemo5dynamicwidgethelper.h>\r
-#include <q-extras/qtsingleapplication.h>\r
-#include <q-extras/qesettingsmanager.h>\r
-#include "quickwidget.hpp"\r
-#include "quickwidgetsettings.hpp"\r
-#include "appeventlistener.hpp"\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-    QApplication::setApplicationName("Quick Widgets");\r
-    QApplication::setOrganizationName("Marquarding");\r
-    // APP_VERSION and APP_BETA are defined in the .pro file\r
-    QApplication::setApplicationVersion(QString(APP_VERSION)\r
-#if APP_BETA\r
-        + " beta"\r
-#endif\r
-        );\r
-\r
-    QtSingleApplication app(argc, argv);\r
-    qDebug() << "Launched quick widgets app";\r
-\r
-    if (app.isRunning())\r
-    {\r
-        qDebug() << "Another instance of the app is running.";\r
-        if (app.arguments().contains("in-background"))\r
-        {\r
-            qDebug() << "Closing that other instance.";\r
-            app.sendMessage(APP_MESSAGE_CLOSE);\r
-        }\r
-        else\r
-        {\r
-            qDebug() << "Asking it to offer to create a new widget.";\r
-            app.sendMessage(APP_MESSAGE_ADDWIDGET);\r
-            return 0;\r
-        }\r
-    }\r
-\r
-    app.setQuitOnLastWindowClosed(false);\r
-    AppEventListener::instance();\r
-\r
-    if (app.arguments().contains("forget-widgets"))\r
-    {\r
-        qDebug() << "We were asked to forget all widgets!";\r
-        QeMaemo5DynamicWidgetHelper::globalInstance()->forgetAllWidgets();\r
-    }\r
-    else\r
-    {\r
-        qDebug() << "Restoring all widgets";\r
-        QeMaemo5DynamicWidgetHelper::globalInstance()->restoreWidgets<QuickWidget>();\r
-    }\r
-\r
-    if (!app.arguments().contains("in-background"))\r
-    {\r
-        // setting for new widget\r
-        QuickWidgetSettings settingsDialog;\r
-        settingsDialog.exec();\r
-        //app.sendMessage(APP_MESSAGE_ADDWIDGET);\r
-    }\r
-    return app.exec();\r
-}\r
+#include <QApplication>
+//#include <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <q-extras/qemaemo5dynamicwidgethelper.h>
+#include <q-extras/qtsingleapplication.h>
+#include <q-extras/qesettingsmanager.h>
+#include "ProcessObject.h"
+#include "quickwidget.hpp"
+#include "quickwidgetsettings.hpp"
+#include "appeventlistener.hpp"
+
+int main(int argc, char *argv[])
+{
+    QApplication::setApplicationName("Quick Widgets");
+    QApplication::setOrganizationName("Marquarding");
+    // APP_VERSION and APP_BETA are defined in the .pro file
+    QApplication::setApplicationVersion(QString(APP_VERSION)
+#if APP_BETA
+        + " beta"
+#endif
+        );
+
+    QtSingleApplication app(argc, argv);
+    qmlRegisterType<ProcessObject>("quickwidgets", 1,0, "Process");
+
+    qDebug() << "Launched quick widgets app";
+
+    if (app.isRunning())
+    {
+        qDebug() << "Another instance of the app is running.";
+        if (app.arguments().contains("in-background"))
+        {
+            qDebug() << "Closing that other instance.";
+            app.sendMessage(APP_MESSAGE_CLOSE);
+        }
+        else
+        {
+            qDebug() << "Asking it to offer to create a new widget.";
+            app.sendMessage(APP_MESSAGE_ADDWIDGET);
+            return 0;
+        }
+    }
+
+    app.setQuitOnLastWindowClosed(false);
+    AppEventListener::instance();
+
+    if (app.arguments().contains("forget-widgets"))
+    {
+        qDebug() << "We were asked to forget all widgets!";
+        QeMaemo5DynamicWidgetHelper::globalInstance()->forgetAllWidgets();
+    }
+    else
+    {
+        qDebug() << "Restoring all widgets";
+        QeMaemo5DynamicWidgetHelper::globalInstance()->restoreWidgets<QuickWidget>();
+    }
+
+    if (!app.arguments().contains("in-background"))
+    {
+        // setting for new widget
+        QuickWidgetSettings settingsDialog;
+        settingsDialog.exec();
+        //app.sendMessage(APP_MESSAGE_ADDWIDGET);
+    }
+    return app.exec();
+}
index c1dbdb3..a921af9 100644 (file)
@@ -33,6 +33,7 @@
 #include <QtCore/QTime>
 #include <QtDeclarative/qdeclarative.h>
 #include <QtCore/QDebug>
+#include <QtCore/QTextCodec>
 
 #include "ProcessObject.h"
 
@@ -67,24 +68,25 @@ void ProcessObject::processErrored(QProcess::ProcessError error) {
 void ProcessObject::processFinished(int exitCode,
                                     QProcess::ExitStatus exitStatus)
 {
+    QTextCodec* codec = QTextCodec::codecForName("utf-8");
     if (exitStatus == QProcess::NormalExit)
     {
         if (exitCode == 0)
-        {
-            QString out(m_process->readAllStandardOutput());
-            qDebug() << "normal";
-            emit completed(out.trimmed());
+        {       
+         QString out = codec->toUnicode(m_process->readAllStandardOutput());
+         qDebug() << "normal";
+         emit completed(out.trimmed());
         }
         else
         {
-            QString err(m_process->readAllStandardError());
-            qDebug() << "failed";
-            emit failed(exitCode, err.trimmed(), m_process->error());
+         QString err = codec->toUnicode(m_process->readAllStandardError());
+         qDebug() << "failed";
+         emit failed(exitCode, err.trimmed(), m_process->error());
         }
     }
     else
     {
-        QString err(m_process->readAllStandardError());
+       QString err = codec->toUnicode(m_process->readAllStandardError());
         qDebug() << "failed";
         emit failed(exitCode, err, m_process->error());
     }
diff --git a/plugins/qmlprocess/qmldir b/plugins/qmlprocess/qmldir
deleted file mode 100644 (file)
index 53b91bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-plugin qmlprocess
index 019ded9..58889da 100644 (file)
@@ -2,7 +2,7 @@ QT += core gui maemo5 declarative
 
 TARGET = quick-widgets
 TEMPLATE = app
-VERSION = 0.1.0
+VERSION = 0.2.2
 
 DEFINES += APP_VERSION=\\\"$$VERSION\\\"
 DEFINES += APP_BETA
@@ -10,13 +10,16 @@ DEFINES += APP_BETA
 HEADERS += \
     quickwidget.hpp \
     quickwidgetsettings.hpp \
-    appeventlistener.hpp
+    appeventlistener.hpp \
+    ProcessObject.h
+
 
 SOURCES += \
     main.cpp\
     quickwidget.cpp \
     quickwidgetsettings.cpp \
-    appeventlistener.cpp
+    appeventlistener.cpp \
+    ProcessObject.cpp
 
 FORMS += \
     quickwidgetsettings.ui
index 63c9563..6047117 100644 (file)
-#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_->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);
+  }
+}
+
index f0a6bd2..a81fb47 100644 (file)
@@ -1,63 +1,70 @@
-#ifndef QUICKWIDGET_HPP\r
-#define QUICKWIDGET_HPP\r
-\r
-#include <QtCore>\r
-#include <QtGui>\r
-#include <q-extras/qemaemo5dynamicwidgethelper.h>\r
-\r
-class QDeclarativeView;\r
-class QuickWidgetWrapper;\r
-\r
-\r
-class QuickWidget : public QeMaemo5DynamicHomescreenWidget\r
-{\r
-    Q_OBJECT\r
-\r
-private:\r
-    void initView(const QString& fileName, const QSize& size=QSize());\r
-    QSize size_;\r
-    QDeclarativeView* view_;\r
-    QuickWidgetWrapper* wrapper_;\r
-\r
-protected:\r
-//    void showSettingsDialog();\r
-    bool restoreWidgetState();\r
-    void errorWidget();\r
-    bool x11Event(XEvent *event);\r
-\r
-public:\r
-    static QuickWidget *createAndShowNew(const QString& fileName, const QSize& size=QSize());\r
-\r
-    explicit QuickWidget(QWidget *parent = 0);\r
-    Q_INVOKABLE bool onHomescreen() { return isVisibleOnCurrentHomescreen(); }\r
-    ~QuickWidget();\r
-\r
-};\r
-\r
-class QuickWidgetWrapper : public QObject\r
-{\r
-    Q_OBJECT\r
-\r
-public:\r
-    QuickWidgetWrapper(QuickWidget *owner) : m_owner(owner) {;}\r
-    Q_PROPERTY(bool isActiveWindow READ onHomeScreen NOTIFY onHomeScreenChanged);\r
-\r
-    bool onHomeScreen() const { return homeScreen; }\r
-\r
-    void setOnHomeScreen(bool active)\r
-    {\r
-        if (active == homeScreen)\r
-            return;\r
-        homeScreen = active;\r
-        emit onHomeScreenChanged();\r
-    }\r
-\r
-Q_SIGNALS:\r
-    void onHomeScreenChanged();\r
-\r
-private:\r
-    QuickWidget *m_owner;\r
-    bool homeScreen;\r
-};\r
-\r
-#endif // QuickWidget_HPP\r
+#ifndef QUICKWIDGET_HPP
+#define QUICKWIDGET_HPP
+
+#include <QtCore>
+#include <QtGui>
+#include <q-extras/qemaemo5dynamicwidgethelper.h>
+
+class QDeclarativeView;
+class QuickWidgetWrapper;
+
+
+class QuickWidget : public QeMaemo5DynamicHomescreenWidget
+{
+    Q_OBJECT
+
+private:
+    void initView(const QString& fileName, const QSize& size=QSize());
+    QSize size_;
+    QDeclarativeView* view_;
+    QuickWidgetWrapper* wrapper_;
+
+protected:
+//    void showSettingsDialog();
+    bool restoreWidgetState();
+    void errorWidget();
+    bool x11Event(XEvent *event);
+    void paintEvent(QPaintEvent *event);
+
+public slots:
+  void resizer(QSize size);
+
+public:
+    static QuickWidget *createAndShowNew(const QString& fileName, const QSize& size=QSize());
+
+    explicit QuickWidget(QWidget *parent = 0);
+    Q_INVOKABLE bool onHomescreen() { return isVisibleOnCurrentHomescreen(); }
+    ~QuickWidget();
+
+};
+
+class QuickWidgetWrapper : public QObject
+{
+    Q_OBJECT
+
+Q_SIGNALS:
+    void onHomeScreenChanged();
+
+public:
+    QuickWidgetWrapper(QuickWidget *owner) : m_owner(owner) {;}
+    Q_PROPERTY(bool isActiveWindow READ onHomeScreen NOTIFY onHomeScreenChanged);
+
+    bool onHomeScreen() const { return homeScreen; }
+
+    void setOnHomeScreen(bool active)
+    {
+        if (active == homeScreen)
+            return;
+        homeScreen = active;
+        emit onHomeScreenChanged();
+    }
+
+
+private:
+    QuickWidget *m_owner;
+    bool homeScreen;
+
+
+};
+
+#endif // QuickWidget_HPP