src/3rdparty/phonon/mmf/objectdump_symbian.cpp
changeset 3 41300fa6a67c
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
       
     1 /*  This file is part of the KDE project.
       
     2 
       
     3 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 
       
     5 This library is free software: you can redistribute it and/or modify
       
     6 it under the terms of the GNU Lesser General Public License as published by
       
     7 the Free Software Foundation, either version 2.1 or 3 of the License.
       
     8 
       
     9 This library is distributed in the hope that it will be useful,
       
    10 but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    12 GNU Lesser General Public License for more details.
       
    13 
       
    14 You should have received a copy of the GNU Lesser General Public License
       
    15 along with this library.  If not, see <http://www.gnu.org/licenses/>.
       
    16 
       
    17 */
       
    18 
       
    19 #include <QTextStream>
       
    20 #include <QWidget>
       
    21 #include <coecntrl.h>
       
    22 #include "objectdump_symbian.h"
       
    23 
       
    24 #include <QtGui/private/qwidget_p.h> // to access QWExtra
       
    25 
       
    26 QT_BEGIN_NAMESPACE
       
    27 
       
    28 namespace ObjectDump
       
    29 {
       
    30 namespace Symbian
       
    31 {
       
    32 
       
    33 QList<QByteArray> QAnnotatorWidget::annotation(const QObject& object)
       
    34 {
       
    35     QList<QByteArray> result;
       
    36 
       
    37     const QWidget* widget = qobject_cast<const QWidget*>(&object);
       
    38     if (widget) {
       
    39 
       
    40         const QWExtra* extra = qt_widget_private(const_cast<QWidget *>(widget))->extraData();
       
    41 
       
    42         if (extra) {
       
    43 
       
    44             QByteArray array;
       
    45             QTextStream stream(&array);
       
    46 
       
    47             stream << "widget (Symbian): ";
       
    48             stream << "activated " << extra->activated << ' ';
       
    49             stream << "nativePaintMode " << extra->nativePaintMode << ' ';
       
    50 
       
    51             stream.flush();
       
    52             result.append(array);
       
    53         }
       
    54     }
       
    55 
       
    56     return result;
       
    57 }
       
    58 
       
    59 QList<QByteArray> QAnnotatorControl::annotation(const QObject& object)
       
    60 {
       
    61     QList<QByteArray> result;
       
    62 
       
    63     const QWidget* widget = qobject_cast<const QWidget*>(&object);
       
    64     if (widget) {
       
    65 
       
    66         const CCoeControl* control = widget->effectiveWinId();
       
    67         if (control) {
       
    68 
       
    69             QByteArray array;
       
    70             QTextStream stream(&array);
       
    71 
       
    72             stream << "control: " << control << ' ';
       
    73             stream << "parent " << control->Parent() << ' ';
       
    74 
       
    75             if (control->IsVisible())
       
    76                 stream << "visible ";
       
    77             else
       
    78                 stream << "invisible ";
       
    79 
       
    80             stream << control->Position().iX << ',' << control->Position().iY << ' ';
       
    81             stream << control->Size().iWidth << 'x' << control->Size().iHeight;
       
    82 
       
    83             if (control->OwnsWindow())
       
    84                 stream << " ownsWindow ";
       
    85 
       
    86             stream.flush();
       
    87             result.append(array);
       
    88         }
       
    89     }
       
    90 
       
    91     return result;
       
    92 }
       
    93 
       
    94 QList<QByteArray> QAnnotatorWindow::annotation(const QObject& object)
       
    95 {
       
    96     QList<QByteArray> result;
       
    97 
       
    98     const QWidget* widget = qobject_cast<const QWidget*>(&object);
       
    99     if (widget) {
       
   100 
       
   101         const CCoeControl* control = widget->effectiveWinId();
       
   102 
       
   103         if (control) {
       
   104             RDrawableWindow *const window = control->DrawableWindow();
       
   105             if(window) {
       
   106                 QByteArray array;
       
   107                 QTextStream stream(&array);
       
   108 
       
   109                 stream << "window: ";
       
   110 
       
   111                 // Server-side address of CWsWindow object
       
   112                 // This is useful for correlation with the window tree dumped by the window
       
   113                 // server (see RWsSession::LogCommand).
       
   114                 // Cast to a void pointer so that log output is in hexadecimal format.
       
   115                 stream << "srv " << reinterpret_cast<const void*>(window->WsHandle()) << ' ';
       
   116 
       
   117                 stream << "group " << window->WindowGroupId() << ' ';
       
   118 
       
   119                 // Client-side handle to the parent window.
       
   120                 // Cast to a void pointer so that log output is in hexadecimal format.
       
   121                 stream << "parent " << reinterpret_cast<const void*>(window->Parent()) << ' ';
       
   122 
       
   123                 stream << window->Position().iX << ',' << window->Position().iY << ' ';
       
   124                 stream << '(' << window->AbsPosition().iX << ',' << window->AbsPosition().iY << ") ";
       
   125                 stream << window->Size().iWidth << 'x' << window->Size().iHeight << ' ';
       
   126 
       
   127                 const TDisplayMode displayMode = window->DisplayMode();
       
   128                 stream << "mode " << displayMode << ' ';
       
   129 
       
   130                 stream << "ord " << window->OrdinalPosition();
       
   131 
       
   132                 stream.flush();
       
   133                 result.append(array);
       
   134             }
       
   135         }
       
   136     }
       
   137 
       
   138     return result;
       
   139 }
       
   140 
       
   141 } // namespace Symbian
       
   142 
       
   143 void addDefaultAnnotators_sys(QDumper& dumper)
       
   144 {
       
   145     dumper.addAnnotator(new Symbian::QAnnotatorWidget);
       
   146     dumper.addAnnotator(new Symbian::QAnnotatorControl);
       
   147     dumper.addAnnotator(new Symbian::QAnnotatorWindow);
       
   148 }
       
   149 
       
   150 void addDefaultAnnotators_sys(QVisitor& visitor)
       
   151 {
       
   152     visitor.addAnnotator(new Symbian::QAnnotatorWidget);
       
   153     visitor.addAnnotator(new Symbian::QAnnotatorControl);
       
   154     visitor.addAnnotator(new Symbian::QAnnotatorWindow);
       
   155 }
       
   156 
       
   157 } // namespace ObjectDump
       
   158 
       
   159 QT_END_NAMESPACE
       
   160