CVS commit by mornfall: Make Kapture a CElemActor. Route celem selection through the Actor interface as well. Fix the tab captions. Constify CElemAction and pass is as a const ref. Miracles!
M +16 -2 kapture/kapture.cpp 1.39 M +3 -1 kapture/kapture.h 1.19 M +1 -1 libcapture/celemactor.cpp 1.3 M +7 -7 libcapture/celemactor.h 1.3 M +3 -2 libkapture/listtreewidget.cpp 1.38 --- kdenonbeta/kdedebian/kapture/kapture/kapture.cpp #1.38:1.39 @@ -180,7 +180,9 @@ void Kapture::elemTabChanged (QWidget *w void Kapture::showElem (CElemPtr e) { - if (m_curElemView) + if (m_curElemView) { m_curElemView -> showElem (e); - else + m_elemTabs -> changeTab (m_curElemView, + m_curElemView -> caption ()); + } else newElemView (e); } @@ -194,4 +196,15 @@ void Kapture::showProgress () m_progressDock -> makeDockVisible (); } +bool Kapture::executeAction (const CElemAction &a) +{ + bool ok = false; + if (a ("select")) { + showElem (a . elem ()); + ok = true; + } + if (! ok) + ok = DefaultCElemActor::executeAction (a); + return ok; +} /* {{{ */ void Kapture::closeNodeView () @@ -229,4 +242,5 @@ TreeView *Kapture::addView (const char * this, SLOT (newElemView (capture::CElemPtr))); v -> setCaption (caption); + v -> setElemActor (this); dock -> manualDock (m_sumDock, KDockWidget::DockCenter); return v; --- kdenonbeta/kdedebian/kapture/kapture/kapture.h #1.18:1.19 @@ -9,4 +9,5 @@ #include <apt-pkg/pkgcache.h> #include <libcapture/celem.h> +#include <libcapture/celemactor.h> #include <kdockwidget.h> @@ -31,5 +32,5 @@ class TerminalInterface; class konsolePart; -class Kapture : public KDockMainWindow +class Kapture : public KDockMainWindow, capture::DefaultCElemActor { Q_OBJECT @@ -38,4 +39,5 @@ class Kapture : public KDockMainWindow virtual ~Kapture(); kapture::TreeView *addView (const char *vt, const char *gt, QString name); + bool executeAction (const capture::CElemAction &a); public slots: --- kdenonbeta/kdedebian/kapture/libcapture/celemactor.cpp #1.2:1.3 @@ -26,5 +26,5 @@ CElemActor::ActionVector DefaultCElemAct } -bool DefaultCElemActor::executeAction (CElemAction a) +bool DefaultCElemActor::executeAction (const CElemAction &a) { bool ok = false; --- kdenonbeta/kdedebian/kapture/libcapture/celemactor.h #1.2:1.3 @@ -34,9 +34,9 @@ namespace capture { : m_id (id), m_name (name), m_elem (e) {} - bool operator== (const CElemAction &a) { return a . m_elem == m_elem && a . m_id == m_id; } - CElemPtr elem () { return m_elem; } - bool operator() (std::string i) { return m_id == i; } - std::string name () { return m_name; } - std::string id () { return m_id; } + bool operator== (const CElemAction &a) const { return a . m_elem == m_elem && a . m_id == m_id; } + CElemPtr elem () const { return m_elem; } + bool operator() (std::string i) const { return m_id == i; } + std::string name () const { return m_name; } + std::string id () const { return m_id; } }; @@ -45,5 +45,5 @@ namespace capture { typedef std::vector <CElemAction> ActionVector; virtual ActionVector listActions (CElemPtr e) = 0; - virtual bool executeAction (CElemAction a) = 0; + virtual bool executeAction (const CElemAction &a) = 0; }; @@ -51,5 +51,5 @@ namespace capture { public: virtual ActionVector listActions (CElemPtr e); - virtual bool executeAction (CElemAction a); + virtual bool executeAction (const CElemAction &a); }; } --- kdenonbeta/kdedebian/kapture/libkapture/listtreewidget.cpp #1.37:1.38 @@ -266,6 +266,7 @@ bool ListTreeWidget::isOpen (std::string void ListTreeWidget::forwardSelectionChanged (QListViewItem *i) { - if (i && i -> isSelectable ()) { - KListViewItemCustom *i1 = dynamic_cast<KListViewItemCustom *> (i); + if (m_actor && i && i -> isSelectable ()) { + CElemPtr e = **(dynamic_cast <KListViewItemCustom *> (i) -> m_treeNode); + m_actor -> executeAction (CElemAction ("select", "", e)); // emit selectionChanged (**(i1 -> m_treeNode)); }