1
//----------------------------------------------------------------------------
2
// filename : kmditoolviewaccessor.h
3
//----------------------------------------------------------------------------
4
// Project : KDE MDI extension
6
// begin : 08/2003 by Joseph Wenninger (jowenn@kde.org)
10
// copyright : (C) 2003 by Joseph Wenninger (jowenn@kde.org)
11
//----------------------------------------------------------------------------
13
//----------------------------------------------------------------------------
15
// This program is free software; you can redistribute it and/or modify
16
// it under the terms of the GNU Library General Public License as
17
// published by the Free Software Foundation; either version 2 of the
18
// License, or (at your option) any later version.
20
//----------------------------------------------------------------------------
25
#include "kmditoolviewaccessor_p.h"
26
#include "kmdiguiclient.h"
27
#include "kmdimainfrm.h"
29
#include "kmditoolviewaccessor.h"
30
#include "kmditoolviewaccessor_p.h"
32
KMdiToolViewAccessor::KMdiToolViewAccessor( KMdiMainFrm *parent, QWidget *widgetToWrap, const QString& tabToolTip, const QString& tabCaption)
36
d=new KMdiToolViewAccessorPrivate();
37
if (widgetToWrap->inherits("KDockWidget")) {
38
d->widgetContainer=dynamic_cast<KDockWidget*>(widgetToWrap);
39
d->widget=d->widgetContainer->getWidget();
41
d->widget=widgetToWrap;
42
QString finalTabCaption;
43
if (tabCaption == 0) {
44
finalTabCaption = widgetToWrap->caption();
45
if (finalTabCaption.isEmpty() && !widgetToWrap->icon()) {
46
finalTabCaption = widgetToWrap->name();
50
finalTabCaption = tabCaption;
52
d->widgetContainer= parent->createDockWidget( widgetToWrap->name(),
53
(widgetToWrap->icon()?(*(widgetToWrap->icon())):QPixmap()),
55
widgetToWrap->caption(),
57
d->widgetContainer->setWidget(widgetToWrap);
59
d->widgetContainer->setToolTipString(tabToolTip);
62
//mdiMainFrm->m_pToolViews->insert(d->widget,this);
63
if (mdiMainFrm->m_mdiGUIClient)
64
mdiMainFrm->m_mdiGUIClient->addToolView(this);
65
else kdDebug(760)<<"mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
67
d->widget->installEventFilter(this);
70
KMdiToolViewAccessor::KMdiToolViewAccessor( KMdiMainFrm *parent) {
72
d=new KMdiToolViewAccessorPrivate();
75
KMdiToolViewAccessor::~KMdiToolViewAccessor() {
76
if (mdiMainFrm->m_pToolViews)
77
mdiMainFrm->m_pToolViews->remove(d->widget);
82
QWidget *KMdiToolViewAccessor::wrapperWidget() {
83
if (!d->widgetContainer) {
84
d->widgetContainer=mdiMainFrm->createDockWidget( "KMdiToolViewAccessor::null",QPixmap());
85
connect(d->widgetContainer,SIGNAL(widgetSet(QWidget*)),this,SLOT(setWidgetToWrap(QWidget*)));
87
return d->widgetContainer;
90
QWidget *KMdiToolViewAccessor::wrappedWidget() {
95
void KMdiToolViewAccessor::setWidgetToWrap(QWidget *widgetToWrap, const QString& tabToolTip, const QString& tabCaption)
97
Q_ASSERT(!(d->widget));
98
Q_ASSERT(!widgetToWrap->inherits("KDockWidget"));
99
disconnect(d->widgetContainer,SIGNAL(widgetSet(QWidget*)),this,SLOT(setWidgetToWrap(QWidget*)));
101
d->widget=widgetToWrap;
102
KDockWidget *tmp=d->widgetContainer;
104
QString finalTabCaption;
105
if (tabCaption == 0) {
106
finalTabCaption = widgetToWrap->caption();
107
if (finalTabCaption.isEmpty() && !widgetToWrap->icon()) {
108
finalTabCaption = widgetToWrap->name();
112
finalTabCaption = tabCaption;
116
tmp = mdiMainFrm->createDockWidget( widgetToWrap->name(),
117
widgetToWrap->icon()?(*(widgetToWrap->icon())):QPixmap(),
119
widgetToWrap->caption(),
121
d->widgetContainer= tmp;
123
d->widgetContainer->setToolTipString(tabToolTip);
127
tmp->setCaption(widgetToWrap->caption());
128
tmp->setTabPageLabel(finalTabCaption);
129
tmp->setPixmap(widgetToWrap->icon()?(*(widgetToWrap->icon())):QPixmap());
130
tmp->setName(widgetToWrap->name());
132
d->widgetContainer->setToolTipString(tabToolTip);
135
tmp->setWidget(widgetToWrap);
136
mdiMainFrm->m_pToolViews->insert(widgetToWrap,this);
137
if (mdiMainFrm->m_mdiGUIClient)
138
mdiMainFrm->m_mdiGUIClient->addToolView(this);
139
else kdDebug(760)<<"mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
141
d->widget->installEventFilter(this);
145
bool KMdiToolViewAccessor::eventFilter(QObject *, QEvent *e) {
146
if (e->type()==QEvent::IconChange) {
147
d->widgetContainer->setPixmap(d->widget->icon()?(*d->widget->icon()):QPixmap());
152
void KMdiToolViewAccessor::placeAndShow(KDockWidget::DockPosition pos, QWidget* pTargetWnd ,int percent)
154
place(pos,pTargetWnd,percent);
157
void KMdiToolViewAccessor::place(KDockWidget::DockPosition pos, QWidget* pTargetWnd ,int percent)
159
Q_ASSERT(d->widgetContainer);
160
if (!d->widgetContainer) return;
161
if (pos == KDockWidget::DockNone) {
162
d->widgetContainer->setEnableDocking(KDockWidget::DockNone);
163
d->widgetContainer->reparent(mdiMainFrm, Qt::WType_TopLevel | Qt::WType_Dialog, QPoint(0,0), true); //pToolView->isVisible());
165
else { // add (and dock) the toolview as DockWidget view
167
KDockWidget* pCover = d->widgetContainer;
169
KDockWidget* pTargetDock = 0L;
170
if (pTargetWnd->inherits("KDockWidget") || pTargetWnd->inherits("KDockWidget_Compat::KDockWidget")) {
171
pTargetDock = (KDockWidget*) pTargetWnd;
174
// Should we dock to ourself?
175
bool DockToOurself = false;
176
if (mdiMainFrm->m_pDockbaseAreaOfDocumentViews) {
177
if (pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews->getWidget()) {
178
DockToOurself = true;
179
pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
181
else if (pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews) {
182
DockToOurself = true;
183
pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
186
// this is not inheriting QWidget*, its plain impossible that this condition is true
187
//if (pTargetWnd == this) DockToOurself = true;
188
if (!DockToOurself) if(pTargetWnd != 0L) {
189
pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd);
191
if (pTargetWnd->parentWidget()) {
192
pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd->parentWidget());
196
if (!pTargetDock || pTargetWnd == mdiMainFrm->getMainDockWidget()) {
197
if (mdiMainFrm->m_managedDockPositionMode && (mdiMainFrm->m_pMdi || mdiMainFrm->m_documentTabWidget)) {
198
KDockWidget *dw1=pTargetDock->findNearestDockWidget(pos);
200
pCover->manualDock(dw1,KDockWidget::DockCenter,percent);
202
pCover->manualDock ( pTargetDock, pos, 20 );
206
pCover->manualDock( pTargetDock, pos, percent);
207
//check pCover->show();
211
void KMdiToolViewAccessor::hide() {
212
Q_ASSERT(d->widgetContainer);
213
if (!d->widgetContainer) return;
214
d->widgetContainer->undock();
217
void KMdiToolViewAccessor::show() {
218
Q_ASSERT(d->widgetContainer);
219
if (!d->widgetContainer) return;
220
d->widgetContainer->makeDockVisible();
224
#ifndef NO_INCLUDE_MOCFILES
225
#include "kmditoolviewaccessor.moc"