20#include "kexisharedactionhost.h"
21#include "kexisharedactionhost_p.h"
22#include "kexiactionproxy.h"
23#include "kexidialogbase.h"
25#include <kexiutils/utils.h>
27#include <kiconloader.h>
32: TQObject(0, "KexiSharedActionHostPrivate")
39 volatileActions.setAutoDelete( true);
40 connect(&actionMapper, TQ_SIGNAL(mapped( const TQString &)), this, TQ_SLOT(slotAction( const TQString &)));
43void KexiSharedActionHostPrivate::slotAction( const TQString& act_id)
45 TQWidget *w = host->focusWindow();
53 w = enablers[act_id.latin1()];
56 proxy = actionProxies[ w ];
73 return *KexiSharedActionHost_defaultHost;
78 KexiSharedActionHost_defaultHost = this;
84: d( new KexiSharedActionHostPrivate(this) )
91 if (KexiSharedActionHost_defaultHost == this) {
93 KexiSharedActionHost_defaultHost = &KexiSharedActionHost_dummy;
99void KexiSharedActionHost::setActionAvailable( const char *action_name, bool avail)
101 TDEAction *act = d->mainWin->actionCollection()->action(action_name);
103 act->setEnabled(avail);
114 TQWidget *fw = d->mainWin->focusWidget();
115 while (fw && obj!=fw)
116 fw = fw->parentWidget();
120 setActionAvailable(action_name, avail);
122 d->enablers.replace(action_name, fw);
125 d->enablers.take(action_name);
132 d->actionProxies.insert( proxy->receiver(), proxy );
146 KexiActionProxy *p = o ? d->actionProxies[ o ] : 0;
147 for (TDEActionPtrList::ConstIterator it=d->sharedActions.constBegin(); it!=d->sharedActions.constEnd(); ++it) {
150 if (!insideDialogBase && d->mainWin->actionCollection()!=a->parentCollection()) {
157 KexiVolatileActionData *va = d->volatileActions[ a ];
160 TQPtrList<TDEAction> actions_list;
161 actions_list.append( a );
165 d->mainWin->plugActionList( a->name(), actions_list );
171 d->mainWin->unplugActionList( a->name() );
176 a->setEnabled(avail);
183 return d->actionProxies[ o ];
189 return d->actionProxies.take( o );
201 if ( dynamic_cast<KMdiMainFrm* >(d->mainWin)) {
202 fw = dynamic_cast<KMdiMainFrm* >(d->mainWin)->activeWindow();
205 TQWidget *aw = tqApp->activeWindow();
208 fw = aw->focusWidget();
211 fw = fw->parentWidget();
215TDEAction* KexiSharedActionHost::createSharedActionInternal( TDEAction *action )
217 TQObject::connect(action,TQ_SIGNAL(activated()), &d->actionMapper, TQ_SLOT(map()));
218 d->actionMapper.setMapping(action, action->name());
219 d->sharedActions.append( action );
225 return d->sharedActions;
242 const TDEShortcut &cut, const char *name, TDEActionCollection* col, const char *subclassName)
245 return createSharedActionInternal(
246 new TDEAction(text, pix_name,
247 cut, 0, 0, col ? col : d->mainWin->actionCollection(), name)
249 else if (tqstricmp(subclassName, "TDEToggleAction")==0)
250 return createSharedActionInternal(
251 new TDEToggleAction(text, pix_name,
252 cut, 0, 0, col ? col : d->mainWin->actionCollection(), name)
254 else if (tqstricmp(subclassName, "TDEActionMenu")==0)
255 return createSharedActionInternal(
256 new TDEActionMenu(text, pix_name, col ? col : d->mainWin->actionCollection(), name)
264 TDEActionCollection* col)
266 return createSharedActionInternal(
267 KStdAction::create( id, name, 0, 0, col ? col : d->mainWin->actionCollection() )
272 const char *name, TDEActionCollection* col)
274 return createSharedActionInternal(
275 new TDEAction(guiItem, cut, 0, 0,
276 col ? col : d->mainWin->actionCollection(), name));
282 d->volatileActions.remove( a );
285 if (d->volatileActions[ a ])
287 d->volatileActions.insert( a, new KexiVolatileActionData() );
290#include "kexisharedactionhost_p.moc"
An interface that acts as proxy for shared actions within the application.
bool isAvailable(const char *action_name, bool alsoCheckInChildren=true) const
bool activateSharedAction(const char *action_name, bool alsoCheckInChildren=true)
bool isSupported(const char *action_name) const
Acts as application-wide host that offers shared actions.
void setActionVolatile(TDEAction *a, bool set)
KexiActionProxy * actionProxyFor(TQObject *o) const
void plugActionProxy(KexiActionProxy *proxy)
void updateActionAvailable(const char *action_name, bool avail, TQObject *obj)
virtual bool acceptsSharedActions(TQObject *o)
virtual ~KexiSharedActionHost()
TDEMainWindow * mainWindow() const
virtual void invalidateSharedActions(TQObject *o)
static KexiSharedActionHost & defaultHost()
KexiSharedActionHost(TDEMainWindow *mainWin)
TDEActionPtrList sharedActions() const
TDEAction * createSharedAction(const TQString &text, const TQString &pix_name, const TDEShortcut &cut, const char *name, TDEActionCollection *col=0, const char *subclassName=0)
KexiActionProxy * takeActionProxyFor(TQObject *o)
type * findParent(TQObject *o, const char *className)
|