Fix problem with the filemanagement profile creating the sidebar -inside- the tabwidget

instead of outside (you could see the difference when doing "add tab" :).

This is because I removed some harmful magic from the kde3 code some time ago
(I'm pretty sure it created surprises in profiles with splitters and no tabs,
only the current view would be converted to a tab container...).
We now never "convert to a tab container", we create the tab container correctly
in the first place.

svn path=/trunk/KDE/kdebase/apps/; revision=741954
This commit is contained in:
David Faure 2007-11-26 20:18:48 +00:00
parent e44bc4ed12
commit fe47757662
4 changed files with 66 additions and 47 deletions

View file

@ -1,7 +1,4 @@
[Profile]
Container0_Children=View1,View2
Container0_Orientation=Horizontal
Container0_SplitterSizes=30,100
Name=File Management
Name[af]=Lêer Bestuurder
Name[ar]=إدارة الملفات
@ -24,13 +21,13 @@ Name[fr]=Gestion de fichiers
Name[fy]=Triembehear
Name[ga]=Bainisteoireacht Chomhad
Name[gl]=Xestión de Ficheiros
Name[he]=ניהול קבצים
Name[he]=× ×××ל ק×צ××<EFBFBD>
Name[hr]=Upravitelj datotekama
Name[hu]=Fájlkezelő
Name[is]=Skráastjóri
Name[it]=Gestione file
Name[ja]=
Name[ka]=
Name[ka]=ფáƒ<EFBFBD>ილáƒáƒ<EFBFBD> áƒáƒ<EFBFBD>რáƒáƒáƒ<EFBFBD>
Name[kk]=Файдарды басқару
Name[km]=
Name[ko]=
@ -69,13 +66,17 @@ Name[zh_CN]=文件管理
Name[zh_TW]=
XMLUIFile=konq-filemanagement.rc
RootItem=Container0
Container0_Children=View1,Tabs1
Container0_Orientation=Horizontal
Container0_SplitterSizes=30,100
Tabs1_Children=ViewT0
View1_LinkedView=true
View1_PassiveMode=true
View1_ServiceName=konq_sidebartng
View1_ServiceType=Browser/View
View1_ToggleView=true
View2_LinkedView=true
View2_PassiveMode=false
View2_ServiceName=dolphinpart
View2_ServiceType=inode/directory
View2_URL=$HOME
ViewT0_LinkedView=true
ViewT0_PassiveMode=false
ViewT0_ServiceName=dolphinpart
ViewT0_ServiceType=inode/directory
ViewT0_URL[$e]=$HOME

View file

@ -905,7 +905,7 @@ void KonqViewManager::loadViewProfileFromGroup( const KConfigGroup &profileGroup
// from profile loading (e.g. in switchView)
m_bLoadingProfile = true;
loadItem( profileGroup, tabContainer(), rootItem, defaultURL, openUrl && forcedURL.isEmpty() );
loadItem( profileGroup, m_pMainWindow, rootItem, defaultURL, openUrl && forcedURL.isEmpty() );
m_bLoadingProfile = false;
@ -1255,6 +1255,10 @@ void KonqViewManager::loadItem( const KConfigGroup &cfg, KonqFrameContainerBase
//kDebug(1202) << "KonqViewManager::loadItem Item is a Tabs";
int index = cfg.readEntry( QString::fromLatin1( "activeChildIndex" ).prepend(prefix), 0 );
if ( !m_tabContainer ) {
createTabContainer(parent->asQWidget(), parent);
parent->insertChildFrame( m_tabContainer );
}
QStringList childList = cfg.readEntry( QString::fromLatin1( "Children" ).prepend( prefix ),QStringList() );
for ( QStringList::Iterator it = childList.begin(); it != childList.end(); ++it )
@ -1531,15 +1535,20 @@ void KonqViewManager::printFullHierarchy( KonqFrameContainerBase * container )
KonqFrameTabs * KonqViewManager::tabContainer()
{
if ( !m_tabContainer ) {
m_tabContainer = new KonqFrameTabs( m_pMainWindow /*as widget*/, m_pMainWindow /*as container*/, this );
connect( m_tabContainer, SIGNAL(ctrlTabPressed()), m_pMainWindow, SLOT(slotCtrlTabPressed()) );
applyConfiguration();
createTabContainer(m_pMainWindow /*as widget*/, m_pMainWindow /*as container*/);
m_pMainWindow->insertChildFrame( m_tabContainer );
}
return m_tabContainer;
}
void KonqViewManager::createTabContainer(QWidget* parent, KonqFrameContainerBase* parentContainer)
{
//kDebug(1202) << "createTabContainer" << parent << parentContainer;
m_tabContainer = new KonqFrameTabs( parent, parentContainer, this );
connect( m_tabContainer, SIGNAL(ctrlTabPressed()), m_pMainWindow, SLOT(slotCtrlTabPressed()) );
applyConfiguration();
}
void KonqViewManager::applyConfiguration()
{
tabContainer()->setAlwaysTabbedMode( KonqSettings::alwaysTabbedMode() );

View file

@ -322,8 +322,10 @@ private:
void loadItem( const KConfigGroup &cfg, KonqFrameContainerBase *parent,
const QString &name, const KUrl & defaultURL, bool openUrl, bool openAfterCurrentPage = false, int pos = -1 );
// Disabled - we do it ourselves
virtual void setActiveComponent(const KComponentData &) {}
void createTabContainer(QWidget* parent, KonqFrameContainerBase* parentContainer);
// Disabled - we do it ourselves
virtual void setActiveComponent(const KComponentData &) {}
signals:
void aboutToRemoveTab( KonqFrameBase* tab );

View file

@ -101,10 +101,10 @@ void ViewMgrTest::initTestCase()
void ViewMgrTest::testCreateFirstView()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
QVERIFY( view );
QVERIFY( viewMgr->tabContainer() );
QVERIFY( viewManager->tabContainer() );
// Use DebugFrameVisitor to find out the structure of the frame hierarchy
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // mainWindow, one tab, one frame
@ -114,7 +114,7 @@ void ViewMgrTest::testCreateFirstView()
QCOMPARE( partWidget->topLevelWidget(), &mainWindow );
QWidget* frame = view->frame()->asQWidget();
QCOMPARE( partWidget->parentWidget(), frame );
QWidget* tabWidget = viewMgr->tabContainer()->asQWidget();
QWidget* tabWidget = viewManager->tabContainer()->asQWidget();
QCOMPARE( frame->parentWidget()->parentWidget(), tabWidget );
// Check frame geometry, to check that all layouts are there
@ -138,10 +138,10 @@ void ViewMgrTest::testCreateFirstView()
void ViewMgrTest::testRemoveFirstView()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // mainWindow, tab widget, one frame
viewMgr->removeView( view );
viewManager->removeView( view );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // removing not allowed
// real test for removeView is part of testSplitView
}
@ -149,11 +149,11 @@ void ViewMgrTest::testRemoveFirstView()
void ViewMgrTest::testSplitView()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // mainWindow, tab widget, one frame
KonqView* view2 = viewMgr->splitView( view, Qt::Horizontal );
KonqView* view2 = viewManager->splitView( view, Qt::Horizontal );
QVERIFY( view2 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[C(FF)].") ); // mainWindow, tab widget, one splitter, two frames
@ -206,27 +206,27 @@ void ViewMgrTest::testSplitView()
// Split again
KonqView* view3 = viewMgr->splitView( view, Qt::Horizontal );
KonqView* view3 = viewManager->splitView( view, Qt::Horizontal );
QVERIFY( view3 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[C(C(FF)F)].") );
// Now test removing the first view
viewMgr->removeView( view );
viewManager->removeView( view );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[C(FF)].") ); // mainWindow, tab widget, one splitter, two frames
// Now test removing the last view
viewMgr->removeView( view3 );
viewManager->removeView( view3 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // mainWindow, tab widget, one frame
}
void ViewMgrTest::testSplitMainContainer()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // mainWindow, tab widget, one frame
KonqFrameContainerBase* tabContainer = view->frame()->parentContainer();
KonqView* view2 = viewMgr->splitMainContainer( view, Qt::Horizontal, "KonqAboutPage", "konq_aboutpage", true );
KonqView* view2 = viewManager->splitMainContainer( view, Qt::Horizontal, "KonqAboutPage", "konq_aboutpage", true );
QVERIFY( view2 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MC(FT[F]).") ); // mainWindow, splitter, frame, tab widget, one frame
@ -256,17 +256,17 @@ void ViewMgrTest::testSplitMainContainer()
QCOMPARE(container->widget(1), tabContainer->asQWidget());
// Now test removing the view we added last
viewMgr->removeView( view2 );
viewManager->removeView( view2 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[F].") ); // mainWindow, tab widget, one frame
}
void ViewMgrTest::testAddTab()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
QVERIFY( view );
KonqView* viewTab2 = viewMgr->addTab("text/html");
KonqView* viewTab2 = viewManager->addTab("text/html");
QVERIFY( viewTab2 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[FF].") ); // mainWindow, tab widget, two tabs
@ -275,9 +275,9 @@ void ViewMgrTest::testAddTab()
void ViewMgrTest::testDuplicateTab()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
viewMgr->duplicateTab(view->frame()); // should return a KonqFrameBase?
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
viewManager->duplicateTab(view->frame()); // should return a KonqFrameBase?
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[FF].") ); // mainWindow, tab widget, two tabs
// TODO check serviceType and serviceName of the new view
@ -286,9 +286,9 @@ void ViewMgrTest::testDuplicateTab()
void ViewMgrTest::testDuplicateSplittedTab()
{
KonqMainWindow mainWindow;
KonqViewManager* viewMgr = mainWindow.viewManager();
KonqView* view = viewMgr->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqView* view2 = viewMgr->splitView( view, Qt::Vertical );
KonqViewManager* viewManager = mainWindow.viewManager();
KonqView* view = viewManager->createFirstView( "KonqAboutPage", "konq_aboutpage" );
KonqView* view2 = viewManager->splitView( view, Qt::Vertical );
QVERIFY( view2 );
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[C(FF)].") ); // mainWindow, tab widget, one splitter, two frames
@ -296,17 +296,24 @@ void ViewMgrTest::testDuplicateSplittedTab()
QVERIFY( container );
QVERIFY( container->parentContainer()->frameType() == "Tabs" ); // TODO enum instead
viewMgr->duplicateTab(container); // TODO shouldn't it return a KonqFrameBase?
viewManager->duplicateTab(container); // TODO shouldn't it return a KonqFrameBase?
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[C(FF)C(FF)].") ); // mainWindow, tab widget, two tabs
viewMgr->removeTab(container);
viewManager->removeTab(container);
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MT[C(FF)].") ); // mainWindow, tab widget, one tab
}
void ViewMgrTest::testLoadProfile()
{
// TODO
// TODO check view->locationBarUrl() and mainWindow.locationBarUrl() too
KonqMainWindow mainWindow;
KonqViewManager* viewManager = mainWindow.viewManager();
const QString profile = KStandardDirs::locate("data", "konqueror/profiles/filemanagement");
QVERIFY(!profile.isEmpty());
QString path = QDir::homePath();
viewManager->loadViewProfileFromFile(profile, "filemanagement", KUrl(path));
// TODO QCOMPARE(view->locationBarUrl(), path);
QCOMPARE( DebugFrameVisitor::inspect(&mainWindow), QString("MC(FT[F]).") ); // mainWindow, splitter, frame, tab widget, one frame
QCOMPARE(mainWindow.locationBarURL(), path);
}
#include "konqviewmgrtest.moc"