00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef NO_KDE
00023
# include <kdebug.h>
00024
#endif
00025
#include "kmditoolviewaccessor_p.h"
00026
#include "kmdiguiclient.h"
00027
#include "kmdimainfrm.h"
00028
00029
#include "kmditoolviewaccessor.h"
00030
#include "kmditoolviewaccessor_p.h"
00031
00032 KMdiToolViewAccessor::KMdiToolViewAccessor(
KMdiMainFrm *parent,
QWidget *widgetToWrap,
const QString& tabToolTip,
const QString& tabCaption)
00033 :
QObject(parent)
00034 {
00035 mdiMainFrm=parent;
00036 d=
new KMdiToolViewAccessorPrivate();
00037
if (widgetToWrap->inherits(
"KDockWidget")) {
00038 d->widgetContainer=dynamic_cast<KDockWidget*>(widgetToWrap);
00039 d->widget=d->widgetContainer->getWidget();
00040 }
else {
00041 d->widget=widgetToWrap;
00042
QString finalTabCaption;
00043
if (tabCaption == 0) {
00044 finalTabCaption = widgetToWrap->
caption();
00045
if (finalTabCaption.
isEmpty() && !widgetToWrap->
icon()) {
00046 finalTabCaption = widgetToWrap->name();
00047 }
00048 }
00049
else {
00050 finalTabCaption = tabCaption;
00051 }
00052 d->widgetContainer= parent->createDockWidget( widgetToWrap->name(),
00053 (widgetToWrap->
icon()?(*(widgetToWrap->
icon())):
QPixmap()),
00054 0L,
00055 widgetToWrap->
caption(),
00056 finalTabCaption);
00057 d->widgetContainer->setWidget(widgetToWrap);
00058
if (tabToolTip!=0) {
00059 d->widgetContainer->setToolTipString(tabToolTip);
00060 }
00061 }
00062
00063
if (mdiMainFrm->m_mdiGUIClient)
00064 mdiMainFrm->m_mdiGUIClient->addToolView(
this);
00065
else kdDebug(760)<<
"mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
00066
00067 d->widget->installEventFilter(
this);
00068 }
00069
00070 KMdiToolViewAccessor::KMdiToolViewAccessor(
KMdiMainFrm *parent) {
00071 mdiMainFrm=parent;
00072 d=
new KMdiToolViewAccessorPrivate();
00073 }
00074
00075 KMdiToolViewAccessor::~KMdiToolViewAccessor() {
00076
if (mdiMainFrm->m_pToolViews)
00077 mdiMainFrm->m_pToolViews->remove(d->widget);
00078
delete d;
00079
00080 }
00081
00082
QWidget *KMdiToolViewAccessor::wrapperWidget() {
00083
if (!d->widgetContainer) {
00084 d->widgetContainer=mdiMainFrm->createDockWidget(
"KMdiToolViewAccessor::null",
QPixmap());
00085 connect(d->widgetContainer,SIGNAL(widgetSet(
QWidget*)),
this,SLOT(setWidgetToWrap(
QWidget*)));
00086 }
00087
return d->widgetContainer;
00088 }
00089
00090
QWidget *KMdiToolViewAccessor::wrappedWidget() {
00091
return d->widget;
00092 }
00093
00094
00095
void KMdiToolViewAccessor::setWidgetToWrap(
QWidget *widgetToWrap,
const QString& tabToolTip,
const QString& tabCaption)
00096 {
00097 Q_ASSERT(!(d->widget));
00098 Q_ASSERT(!widgetToWrap->inherits(
"KDockWidget"));
00099 disconnect(d->widgetContainer,SIGNAL(widgetSet(
QWidget*)),
this,SLOT(setWidgetToWrap(
QWidget*)));
00100
delete d->widget;
00101 d->widget=widgetToWrap;
00102 KDockWidget *tmp=d->widgetContainer;
00103
00104
QString finalTabCaption;
00105
if (tabCaption == 0) {
00106 finalTabCaption = widgetToWrap->
caption();
00107
if (finalTabCaption.
isEmpty() && !widgetToWrap->
icon()) {
00108 finalTabCaption = widgetToWrap->name();
00109 }
00110 }
00111
else {
00112 finalTabCaption = tabCaption;
00113 }
00114
00115
if (!tmp) {
00116 tmp = mdiMainFrm->createDockWidget( widgetToWrap->name(),
00117 widgetToWrap->
icon()?(*(widgetToWrap->
icon())):
QPixmap(),
00118 0L,
00119 widgetToWrap->
caption(),
00120 finalTabCaption );
00121 d->widgetContainer= tmp;
00122
if (tabToolTip!=0) {
00123 d->widgetContainer->setToolTipString(tabToolTip);
00124 }
00125 }
00126
else {
00127 tmp->setCaption(widgetToWrap->
caption());
00128 tmp->setTabPageLabel(finalTabCaption);
00129 tmp->setPixmap(widgetToWrap->
icon()?(*(widgetToWrap->
icon())):
QPixmap());
00130 tmp->setName(widgetToWrap->name());
00131
if (tabToolTip!=0) {
00132 d->widgetContainer->setToolTipString(tabToolTip);
00133 }
00134 }
00135 tmp->setWidget(widgetToWrap);
00136 mdiMainFrm->m_pToolViews->insert(widgetToWrap,
this);
00137
if (mdiMainFrm->m_mdiGUIClient)
00138 mdiMainFrm->m_mdiGUIClient->addToolView(
this);
00139
else kdDebug(760)<<
"mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
00140
00141 d->widget->installEventFilter(
this);
00142 }
00143
00144
00145
bool KMdiToolViewAccessor::eventFilter(
QObject *o,
QEvent *e) {
00146
if (e->
type()==QEvent::IconChange) {
00147 d->widgetContainer->setPixmap(d->widget->icon()?(*d->widget->icon()):
QPixmap());
00148 }
00149
return false;
00150 }
00151
00152
void KMdiToolViewAccessor::placeAndShow(KDockWidget::DockPosition pos,
QWidget* pTargetWnd ,
int percent)
00153 {
00154 place(pos,pTargetWnd,percent);
00155 show();
00156 }
00157
void KMdiToolViewAccessor::place(KDockWidget::DockPosition pos,
QWidget* pTargetWnd ,
int percent)
00158 {
00159 Q_ASSERT(d->widgetContainer);
00160
if (!d->widgetContainer)
return;
00161
if (pos == KDockWidget::DockNone) {
00162 d->widgetContainer->setEnableDocking(KDockWidget::DockNone);
00163 d->widgetContainer->reparent(mdiMainFrm, Qt::WType_TopLevel | Qt::WType_Dialog,
QPoint(0,0),
true);
00164 }
00165
else {
00166
00167 KDockWidget* pCover = d->widgetContainer;
00168
00169 KDockWidget* pTargetDock = 0L;
00170
if (pTargetWnd->inherits(
"KDockWidget") || pTargetWnd->inherits(
"KDockWidget_Compat::KDockWidget")) {
00171 pTargetDock = (KDockWidget*) pTargetWnd;
00172 }
00173
00174
00175
bool DockToOurself =
false;
00176
if (mdiMainFrm->m_pDockbaseAreaOfDocumentViews) {
00177
if (pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews->getWidget()) {
00178 DockToOurself =
true;
00179 pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
00180 }
00181
else if (pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews) {
00182 DockToOurself =
true;
00183 pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
00184 }
00185 }
00186
00187
00188
if (!DockToOurself)
if(pTargetWnd != 0L) {
00189 pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd);
00190
if (!pTargetDock) {
00191
if (pTargetWnd->
parentWidget()) {
00192 pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd->
parentWidget());
00193 }
00194 }
00195 }
00196
if (!pTargetDock || pTargetWnd == mdiMainFrm->getMainDockWidget()) {
00197
if (mdiMainFrm->m_managedDockPositionMode && (mdiMainFrm->m_pMdi || mdiMainFrm->m_documentTabWidget)) {
00198 KDockWidget *dw1=pTargetDock->findNearestDockWidget(pos);
00199
if (dw1)
00200 pCover->manualDock(dw1,KDockWidget::DockCenter,percent);
00201
else
00202 pCover->manualDock ( pTargetDock, pos, 20 );
00203
return;
00204 }
00205 }
00206 pCover->manualDock( pTargetDock, pos, percent);
00207
00208 }
00209 }
00210
00211
void KMdiToolViewAccessor::hide() {
00212 Q_ASSERT(d->widgetContainer);
00213
if (!d->widgetContainer)
return;
00214 d->widgetContainer->undock();
00215 }
00216
00217
void KMdiToolViewAccessor::show() {
00218 Q_ASSERT(d->widgetContainer);
00219
if (!d->widgetContainer)
return;
00220 d->widgetContainer->makeDockVisible();
00221 }
00222
00223
00224
#ifndef NO_INCLUDE_MOCFILES
00225
#include "kmditoolviewaccessor.moc"
00226
#endif