/* trace.cc */ #include "trace.h" #include #include #include #include #include #include #include #include namespace ConnectModule { /* ----------------------------------------------------------------------- */ class TraceWidget : public QWidget { public: TraceWidget (QWidget* parent); virtual ~TraceWidget (); QTreeWidgetItem * show (QTreeWidgetItem * branch, QString text); private: QTreeWidget * m_tree; }; /* ----------------------------------------------------------------------- */ class TraceFactory: public KDevelop::IToolViewFactory { public: virtual QWidget* create (QWidget *parent = 0) { m_widget = new TraceWidget (parent); return m_widget; } virtual Qt::DockWidgetArea defaultPosition () { return Qt::BottomDockWidgetArea; } virtual QString id () const { return "org.kdevelop.Connect.Trace"; } private: TraceWidget * m_widget; public: TraceFactory () : m_widget (NULL) { } }; /* ----------------------------------------------------------------------- */ static TraceWidget * g_trace = NULL; static QTreeWidgetItem * g_current = NULL; /* ----------------------------------------------------------------------- */ TraceWidget::TraceWidget(QWidget* parent) : QWidget (parent), m_tree (NULL) { setObjectName("ConnectTrace"); setWindowTitle(i18n("Connect Trace")); setWindowIcon(SmallIcon("enum")); m_tree = new QTreeWidget (this); m_tree->header()->setResizeMode(0, QHeaderView::ResizeToContents); // m_tree->header()->setStretchLastSection(false); QVBoxLayout* vbox = new QVBoxLayout(this); vbox->setMargin(0); vbox->addWidget(m_tree); setLayout( vbox ); setWhatsThis( i18n( "Trace" ) ); g_trace = this; g_current = NULL; #if 0 trace_open ("branch"); trace ("sub item"); trace_close (); trace ("next item"); trace_alert ("alert"); #endif } TraceWidget::~TraceWidget() { g_trace = NULL; g_current = NULL; } /* ----------------------------------------------------------------------- */ QTreeWidgetItem * TraceWidget::show (QTreeWidgetItem * branch, QString text) { QTreeWidgetItem * item; if (branch == NULL) { item = new QTreeWidgetItem (); m_tree->addTopLevelItem (item); } else { item = new QTreeWidgetItem (branch); } item->setText (0, text); return item; } /* ----------------------------------------------------------------------- */ void trace_open (QString text) { if (g_trace != NULL) g_current = g_trace->show (g_current, text); } void trace_close () { if (g_current != NULL) g_current = g_current->parent (); } void trace (QString text) { if (g_trace != NULL) g_trace->show (g_current, text); } /* ----------------------------------------------------------------------- */ void trace_restart (QString text) { g_current = NULL; trace_open (text); } void trace_top (QString text) { if (g_trace != NULL) g_trace->show (NULL, text); } /* ----------------------------------------------------------------------- */ KDevelop::IToolViewFactory * new_trace_factory () { return new TraceFactory (); } /* ----------------------------------------------------------------------- */ } // end of namesopace