X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=trace.cpp;h=ee9ee59dcedd32a5abdccd3ef73eb82e1e1595cc;hb=399cd6cba2b7a0ad3d2de29593c3143ece63aad3;hp=2939a6d783f7696c9d0e345937ec861ec165a7c6;hpb=7eeee0f83bd4f8118c2692045458ced9fbdb4491;p=dorian diff --git a/trace.cpp b/trace.cpp index 2939a6d..ee9ee59 100644 --- a/trace.cpp +++ b/trace.cpp @@ -1,4 +1,295 @@ +#include +#include + #include "trace.h" -int Trace::indent = 0; +int Trace::indent; +QtMsgType Trace::level = QtDebugMsg; +QFile Trace::file; + +Trace::EventName Trace::eventTab[] = { + {QEvent::None, "QEvent::None"}, + {QEvent::Timer, "QEvent::Timer"}, + {QEvent::MouseButtonPress, "QEvent::MouseButtonPress"}, + {QEvent::MouseButtonRelease, "QEvent::MouseButtonRelease"}, + {QEvent::MouseButtonDblClick, "QEvent::MouseButtonDblClick"}, + {QEvent::MouseMove, "QEvent::MouseMove"}, + {QEvent::KeyPress, "QEvent::KeyPress"}, + {QEvent::KeyRelease, "QEvent::KeyRelease"}, + {QEvent::FocusIn, "QEvent::FocusIn"}, + {QEvent::FocusOut, "QEvent::FocusOut"}, + {QEvent::Enter, "QEvent::Enter"}, + {QEvent::Leave, "QEvent::Leave"}, + {QEvent::Paint, "QEvent::Paint"}, + {QEvent::Move, "QEvent::Move"}, + {QEvent::Resize, "QEvent::Resize"}, + {QEvent::Create, "QEvent::Create"}, + {QEvent::Destroy, "QEvent::Destroy"}, + {QEvent::Show, "QEvent::Show"}, + {QEvent::Hide, "QEvent::Hide"}, + {QEvent::Close, "QEvent::Close"}, + {QEvent::Quit, "QEvent::Quit"}, + {QEvent::ParentChange, "QEvent::ParentChange"}, + {QEvent::ParentAboutToChange, "QEvent::ParentAboutToChange"}, +#ifdef QT3_SUPPORT + {QEvent::Reparent, "QEvent::Reparent"}, +#endif + {QEvent::ThreadChange, "QEvent::ThreadChange"}, + {QEvent::WindowActivate, "QEvent::WindowActivate"}, + {QEvent::WindowDeactivate, "QEvent::WindowDeactivate"}, + {QEvent::ShowToParent, "QEvent::ShowToParent"}, + {QEvent::HideToParent, "QEvent::HideToParent"}, + {QEvent::Wheel, "QEvent::Wheel"}, + {QEvent::WindowTitleChange, "QEvent::WindowTitleChange"}, + {QEvent::WindowIconChange, "QEvent::WindowIconChange"}, + {QEvent::ApplicationWindowIconChange, "QEvent::ApplicationWindowIconChange"}, + {QEvent::ApplicationFontChange, "QEvent::ApplicationFontChange"}, + {QEvent::ApplicationLayoutDirectionChange, "QEvent::ApplicationLayoutDirectionChange"}, + {QEvent::ApplicationPaletteChange, "QEvent::ApplicationPaletteChange"}, + {QEvent::PaletteChange, "QEvent::PaletteChange"}, + {QEvent::Clipboard, "QEvent::Clipboard"}, + {QEvent::Speech, "QEvent::Speech"}, + {QEvent::MetaCall, "QEvent::MetaCall"}, + {QEvent::SockAct, "QEvent::SockAct"}, + {QEvent::WinEventAct, "QEvent::WinEventAct"}, + {QEvent::DeferredDelete, "QEvent::DeferredDelete"}, + {QEvent::DragEnter, "QEvent::DragEnter"}, + {QEvent::DragMove, "QEvent::DragMove"}, + {QEvent::DragLeave, "QEvent::DragLeave"}, + {QEvent::Drop, "QEvent::Drop"}, + {QEvent::DragResponse, "QEvent::DragResponse"}, + {QEvent::ChildAdded, "QEvent::ChildAdded"}, + {QEvent::ChildPolished, "QEvent::ChildPolished"}, +#ifdef QT3_SUPPORT + {QEvent::ChildInsertedRequest, "QEvent::ChildInsertedRequest"}, + {QEvent::ChildInserted, "QEvent::ChildInserted"}, + {QEvent::LayoutHint, "QEvent::LayoutHint"}, +#endif + {QEvent::ChildRemoved, "QEvent::ChildRemoved"}, + {QEvent::ShowWindowRequest, "QEvent::ShowWindowRequest"}, + {QEvent::PolishRequest, "QEvent::PolishRequest"}, + {QEvent::Polish, "QEvent::Polish"}, + {QEvent::LayoutRequest, "QEvent::LayoutRequest"}, + {QEvent::UpdateRequest, "QEvent::UpdateRequest"}, + {QEvent::UpdateLater, "QEvent::UpdateLater"}, + + {QEvent::EmbeddingControl, "QEvent::EmbeddingControl"}, + {QEvent::ActivateControl, "QEvent::ActivateControl"}, + {QEvent::DeactivateControl, "QEvent::DeactivateControl"}, + {QEvent::ContextMenu, "QEvent::ContextMenu"}, + {QEvent::InputMethod, "QEvent::InputMethod"}, + {QEvent::AccessibilityPrepare, "QEvent::AccessibilityPrepare"}, + {QEvent::TabletMove, "QEvent::TabletMove"}, + {QEvent::LocaleChange, "QEvent::LocaleChange"}, + {QEvent::LanguageChange, "QEvent::LanguageChange"}, + {QEvent::LayoutDirectionChange, "QEvent::LayoutDirectionChange"}, + {QEvent::Style, "QEvent::Style"}, + {QEvent::TabletPress, "QEvent::TabletPress"}, + {QEvent::TabletRelease, "QEvent::TabletRelease"}, + {QEvent::OkRequest, "QEvent::OkRequest"}, + {QEvent::HelpRequest, "QEvent::HelpRequest"}, + + {QEvent::IconDrag, "QEvent::IconDrag"}, + + {QEvent::FontChange, "QEvent::FontChange"}, + {QEvent::EnabledChange, "QEvent::EnabledChange"}, + {QEvent::ActivationChange, "QEvent::ActivationChange"}, + {QEvent::StyleChange, "QEvent::StyleChange"}, + {QEvent::IconTextChange, "QEvent::IconTextChange"}, + {QEvent::ModifiedChange, "QEvent::ModifiedChange"}, + {QEvent::MouseTrackingChange, "QEvent::MouseTrackingChange"}, + + {QEvent::WindowBlocked, "QEvent::WindowBlocked"}, + {QEvent::WindowUnblocked, "QEvent::WindowUnblocked"}, + {QEvent::WindowStateChange, "QEvent::WindowStateChange"}, + + {QEvent::ToolTip, "QEvent::ToolTip"}, + {QEvent::WhatsThis, "QEvent::WhatsThis"}, + {QEvent::StatusTip, "QEvent::StatusTip"}, + + {QEvent::ActionChanged, "QEvent::ActionChanged"}, + {QEvent::ActionAdded, "QEvent::ActionAdded"}, + {QEvent::ActionRemoved, "QEvent::ActionRemoved"}, + + {QEvent::FileOpen, "QEvent::FileOpen"}, + + {QEvent::Shortcut, "QEvent::Shortcut"}, + {QEvent::ShortcutOverride, "QEvent::ShortcutOverride"}, + +#ifdef QT3_SUPPORT + {QEvent::Accel, "QEvent::Accel"}, + {QEvent::AccelAvailable, "QEvent::AccelAvailable"}, + {QEvent::AccelOverride, "QEvent::AccelOverride"}, +#endif + + {QEvent::WhatsThisClicked, "QEvent::WhatsThisClicked"}, + +#ifdef QT3_SUPPORT + {QEvent::CaptionChange, "QEvent::CaptionChange"}, + {QEvent::IconChange, "QEvent::IconChange"}, +#endif + {QEvent::ToolBarChange, "QEvent::ToolBarChange"}, + + {QEvent::ApplicationActivate, "QEvent::ApplicationActivate"}, + {QEvent::ApplicationActivated, "QEvent::ApplicationActivated"}, + {QEvent::ApplicationDeactivate, "QEvent::ApplicationDeactivate"}, + {QEvent::ApplicationDeactivated, "QEvent::ApplicationDeactivated"}, + + {QEvent::QueryWhatsThis, "QEvent::QueryWhatsThis"}, + {QEvent::EnterWhatsThisMode, "QEvent::EnterWhatsThisMode"}, + {QEvent::LeaveWhatsThisMode, "QEvent::LeaveWhatsThisMode"}, + + {QEvent::ZOrderChange, "QEvent::ZOrderChange"}, + + {QEvent::HoverEnter, "QEvent::HoverEnter"}, + {QEvent::HoverLeave, "QEvent::HoverLeave"}, + {QEvent::HoverMove, "QEvent::HoverMove"}, + + {QEvent::AccessibilityHelp, "QEvent::AccessibilityHelp"}, + {QEvent::AccessibilityDescription, "QEvent::AccessibilityDescription"}, + +#ifdef QT_KEYPAD_NAVIGATION + {QEvent::EnterEditFocus, "QEvent::EnterEditFocus"}, + {QEvent::LeaveEditFocus, "QEvent::LeaveEditFocus"}, +#endif + {QEvent::AcceptDropsChange, "QEvent::AcceptDropsChange"}, + + {QEvent::MenubarUpdated, "QEvent::MenubarUpdated"}, + {QEvent::ZeroTimerEvent, "QEvent::ZeroTimerEvent"}, + + {QEvent::GraphicsSceneMouseMove, "QEvent::GraphicsSceneMouseMove"}, + {QEvent::GraphicsSceneMousePress, "QEvent::GraphicsSceneMousePress"}, + {QEvent::GraphicsSceneMouseRelease, "QEvent::GraphicsSceneMouseRelease"}, + {QEvent::GraphicsSceneMouseDoubleClick, "QEvent::GraphicsSceneMouseDoubleClick"}, + {QEvent::GraphicsSceneContextMenu, "QEvent::GraphicsSceneContextMenu"}, + {QEvent::GraphicsSceneHoverEnter, "QEvent::GraphicsSceneHoverEnter"}, + {QEvent::GraphicsSceneHoverMove, "QEvent::GraphicsSceneHoverMove"}, + {QEvent::GraphicsSceneHoverLeave, "QEvent::GraphicsSceneHoverLeave"}, + {QEvent::GraphicsSceneHelp, "QEvent::GraphicsSceneHelp"}, + {QEvent::GraphicsSceneDragEnter, "QEvent::GraphicsSceneDragEnter"}, + {QEvent::GraphicsSceneDragMove, "QEvent::GraphicsSceneDragMove"}, + {QEvent::GraphicsSceneDragLeave, "QEvent::GraphicsSceneDragLeave"}, + {QEvent::GraphicsSceneDrop, "QEvent::GraphicsSceneDrop"}, + {QEvent::GraphicsSceneWheel, "QEvent::GraphicsSceneWheel"}, + + {QEvent::KeyboardLayoutChange, "QEvent::KeyboardLayoutChange"}, + + {QEvent::DynamicPropertyChange, "QEvent::DynamicPropertyChange"}, + + {QEvent::TabletEnterProximity, "QEvent::TabletEnterProximity"}, + {QEvent::TabletLeaveProximity, "QEvent::TabletLeaveProximity"}, + + {QEvent::NonClientAreaMouseMove, "QEvent::NonClientAreaMouseMove"}, + {QEvent::NonClientAreaMouseButtonPress, "QEvent::NonClientAreaMouseButtonPress"}, + {QEvent::NonClientAreaMouseButtonRelease, "QEvent::NonClientAreaMouseButtonRelease"}, + {QEvent::NonClientAreaMouseButtonDblClick, "QEvent::NonClientAreaMouseButtonDblClick"}, + + {QEvent::MacSizeChange, "QEvent::MacSizeChange"}, + + {QEvent::ContentsRectChange, "QEvent::ContentsRectChange"}, + + {QEvent::MacGLWindowChange, "QEvent::MacGLWindowChange"}, + + {QEvent::FutureCallOut, "QEvent::FutureCallOut"}, + + {QEvent::GraphicsSceneResize, "QEvent::GraphicsSceneResize"}, + {QEvent::GraphicsSceneMove, "QEvent::GraphicsSceneMove"}, + + {QEvent::CursorChange, "QEvent::CursorChange"}, + {QEvent::ToolTipChange, "QEvent::ToolTipChange"}, + + {QEvent::NetworkReplyUpdated, "QEvent::NetworkReplyUpdated"}, + + {QEvent::GrabMouse, "QEvent::GrabMouse"}, + {QEvent::UngrabMouse, "QEvent::UngrabMouse"}, + {QEvent::GrabKeyboard, "QEvent::GrabKeyboard"}, + {QEvent::UngrabKeyboard, "QEvent::UngrabKeyboard"}, + {QEvent::MacGLClearDrawable, "QEvent::MacGLClearDrawable"}, + + {QEvent::StateMachineSignal, "QEvent::StateMachineSignal"}, + {QEvent::StateMachineWrapped, "QEvent::StateMachineWrapped"}, + + {QEvent::TouchBegin, "QEvent::TouchBegin"}, + {QEvent::TouchUpdate, "QEvent::TouchUpdate"}, + {QEvent::TouchEnd, "QEvent::TouchEnd"}, + + {QEvent::NativeGesture, "QEvent::NativeGesture"}, + + {QEvent::RequestSoftwareInputPanel, "QEvent::RequestSoftwareInputPanel"}, + {QEvent::CloseSoftwareInputPanel, "QEvent::CloseSoftwareInputPanel"}, + + {QEvent::UpdateSoftKeys, "QEvent::UpdateSoftKeys"}, + + {QEvent::WinIdChange, "QEvent::WinIdChange"}, + {QEvent::Gesture, "QEvent::Gesture"}, + {QEvent::GestureOverride, "QEvent::GestureOverride"}, + + {0, 0} +}; + +Trace::Trace(const QString &s): name(s) +{ + messageHandler(QtDebugMsg, QString(">%1").arg(name).toAscii().constData()); + indent++; +} + +Trace::~Trace() +{ + if (--indent < 0) { + indent = 0; + } + messageHandler(QtDebugMsg, QString("<%1").arg(name).toAscii().constData()); +} + +QString Trace::event(QEvent::Type t) +{ + for (int i = 0; eventTab[i].name; i++) { + if (eventTab[i].type == t) { + return eventTab[i].name; + } + } + if (t >= QEvent::User) { + return QString("QEvent::User+%1").arg(t - QEvent::User); + } else { + return QString("Unknown event %1").arg(t); + } +} + +QString Trace::prefix() +{ + return QTime::currentTime().toString("hh:mm:ss.zzz ") + + QString(" ").repeated(indent); +} + +void Trace::messageHandler(QtMsgType type, const char *msg) +{ + if (type >= Trace::level) { + QtMsgHandler oldHandler = qInstallMsgHandler(0); + switch (type) { + case QtDebugMsg: + qt_message_output(QtDebugMsg, (prefix()+msg).toUtf8().constData()); + break; + default: + qt_message_output(type, msg); + } + qInstallMsgHandler(oldHandler); + if (Trace::file.isOpen()) { + Trace::file.write((prefix() + msg + "\n").toUtf8()); + Trace::file.flush(); + } + } +} + +void Trace::setFileName(const QString &fileName) +{ + Trace::file.close(); + Trace::file.setFileName(fileName); + if (!fileName.isEmpty()) { + (void)Trace::file.open(QIODevice::WriteOnly); + } +} +QString Trace::fileName() +{ + return Trace::file.fileName(); +}