src/3rdparty/phonon/mmf/objectdump_symbian.cpp
changeset 3 41300fa6a67c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/3rdparty/phonon/mmf/objectdump_symbian.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -0,0 +1,160 @@
+/*  This file is part of the KDE project.
+
+Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+
+This library is free software: you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation, either version 2.1 or 3 of the License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this library.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include <QTextStream>
+#include <QWidget>
+#include <coecntrl.h>
+#include "objectdump_symbian.h"
+
+#include <QtGui/private/qwidget_p.h> // to access QWExtra
+
+QT_BEGIN_NAMESPACE
+
+namespace ObjectDump
+{
+namespace Symbian
+{
+
+QList<QByteArray> QAnnotatorWidget::annotation(const QObject& object)
+{
+    QList<QByteArray> result;
+
+    const QWidget* widget = qobject_cast<const QWidget*>(&object);
+    if (widget) {
+
+        const QWExtra* extra = qt_widget_private(const_cast<QWidget *>(widget))->extraData();
+
+        if (extra) {
+
+            QByteArray array;
+            QTextStream stream(&array);
+
+            stream << "widget (Symbian): ";
+            stream << "activated " << extra->activated << ' ';
+            stream << "nativePaintMode " << extra->nativePaintMode << ' ';
+
+            stream.flush();
+            result.append(array);
+        }
+    }
+
+    return result;
+}
+
+QList<QByteArray> QAnnotatorControl::annotation(const QObject& object)
+{
+    QList<QByteArray> result;
+
+    const QWidget* widget = qobject_cast<const QWidget*>(&object);
+    if (widget) {
+
+        const CCoeControl* control = widget->effectiveWinId();
+        if (control) {
+
+            QByteArray array;
+            QTextStream stream(&array);
+
+            stream << "control: " << control << ' ';
+            stream << "parent " << control->Parent() << ' ';
+
+            if (control->IsVisible())
+                stream << "visible ";
+            else
+                stream << "invisible ";
+
+            stream << control->Position().iX << ',' << control->Position().iY << ' ';
+            stream << control->Size().iWidth << 'x' << control->Size().iHeight;
+
+            if (control->OwnsWindow())
+                stream << " ownsWindow ";
+
+            stream.flush();
+            result.append(array);
+        }
+    }
+
+    return result;
+}
+
+QList<QByteArray> QAnnotatorWindow::annotation(const QObject& object)
+{
+    QList<QByteArray> result;
+
+    const QWidget* widget = qobject_cast<const QWidget*>(&object);
+    if (widget) {
+
+        const CCoeControl* control = widget->effectiveWinId();
+
+        if (control) {
+            RDrawableWindow *const window = control->DrawableWindow();
+            if(window) {
+                QByteArray array;
+                QTextStream stream(&array);
+
+                stream << "window: ";
+
+                // Server-side address of CWsWindow object
+                // This is useful for correlation with the window tree dumped by the window
+                // server (see RWsSession::LogCommand).
+                // Cast to a void pointer so that log output is in hexadecimal format.
+                stream << "srv " << reinterpret_cast<const void*>(window->WsHandle()) << ' ';
+
+                stream << "group " << window->WindowGroupId() << ' ';
+
+                // Client-side handle to the parent window.
+                // Cast to a void pointer so that log output is in hexadecimal format.
+                stream << "parent " << reinterpret_cast<const void*>(window->Parent()) << ' ';
+
+                stream << window->Position().iX << ',' << window->Position().iY << ' ';
+                stream << '(' << window->AbsPosition().iX << ',' << window->AbsPosition().iY << ") ";
+                stream << window->Size().iWidth << 'x' << window->Size().iHeight << ' ';
+
+                const TDisplayMode displayMode = window->DisplayMode();
+                stream << "mode " << displayMode << ' ';
+
+                stream << "ord " << window->OrdinalPosition();
+
+                stream.flush();
+                result.append(array);
+            }
+        }
+    }
+
+    return result;
+}
+
+} // namespace Symbian
+
+void addDefaultAnnotators_sys(QDumper& dumper)
+{
+    dumper.addAnnotator(new Symbian::QAnnotatorWidget);
+    dumper.addAnnotator(new Symbian::QAnnotatorControl);
+    dumper.addAnnotator(new Symbian::QAnnotatorWindow);
+}
+
+void addDefaultAnnotators_sys(QVisitor& visitor)
+{
+    visitor.addAnnotator(new Symbian::QAnnotatorWidget);
+    visitor.addAnnotator(new Symbian::QAnnotatorControl);
+    visitor.addAnnotator(new Symbian::QAnnotatorWindow);
+}
+
+} // namespace ObjectDump
+
+QT_END_NAMESPACE
+