diff -r fac2248e2afa -r 832e96c9abb6 mainwindow.cpp --- a/mainwindow.cpp Mon Mar 08 12:22:15 2010 +0000 +++ b/mainwindow.cpp Mon Mar 08 12:24:26 2010 +0000 @@ -12,6 +12,7 @@ #include "exports.h" #include "file.h" #include "findresultwidget.h" +#include "findwidget.h" #include "flagrow.h" #include "historywindow.h" #include "imports.h" @@ -42,6 +43,8 @@ extern TextEditor *textEditor; extern Main *mainWindow; +extern FindWidget *findWidget; +extern FindResultWidget *findResultWidget; extern QString tmpVymDir; extern QString clipboardDir; extern QString clipboardFile; @@ -124,15 +127,16 @@ makeSubDirs (clipboardDir); clipboardEmpty=true; + // Remember PID of our friendly webbrowser browserPID=new qint64; *browserPID=0; - // Dock widgets //FIXME-2 testing... - - FindResultWidget *findResultWidget=new FindResultWidget; - QDockWidget *dw= new QDockWidget ("Dock Widget",this); + // Dock widgets + findResultWidget=new FindResultWidget (); + QDockWidget *dw= new QDockWidget (tr ("Search results","FindResultWidget"),this); dw->setWidget (findResultWidget); - dw->hide(); + dw->setObjectName ("FindResultWidget"); + dw->hide(); addDockWidget (Qt::RightDockWidgetArea,dw); // Satellite windows ////////////////////////////////////////// @@ -197,12 +201,28 @@ // width of xLinksMenu xLinkMenuWidth=60; + // Create Layout + QWidget* centralWidget = new QWidget (this); + QVBoxLayout *layout=new QVBoxLayout (centralWidget); + setCentralWidget(centralWidget); + // Create tab widget which holds the maps - tabWidget= new QTabWidget (this); + tabWidget= new QTabWidget (centralWidget); connect( tabWidget, SIGNAL( currentChanged( QWidget * ) ), this, SLOT( editorChanged( QWidget * ) ) ); - setCentralWidget(tabWidget); + // Create findWidget + findWidget = new FindWidget (centralWidget); + findWidget->hide(); + layout->addWidget (tabWidget); + layout->addWidget (findWidget); + + connect ( + findWidget, SIGNAL (nextButton (QString) ), + this, SLOT (editFindNext(QString) ) ); + connect ( + findWidget , SIGNAL (hideFindWidget() ), + this, SLOT (editHideFindWidget() ) ); setupFileActions(); setupEditActions(); @@ -753,7 +773,7 @@ a->addTo( tb ); switchboard.addConnection(a,tr("Edit","Shortcut group")); editMenu->addAction (a); - actionSortBackChildren=a; + actionSortBackChildren=a; //FIXME-2 is toggle action? why? alt = new QAction( QPixmap(flagsPath+"flag-scrolled-right.png"), tr( "Scroll branch","Edit menu" ), this); alt->setShortcut ( Qt::Key_S ); // Scroll branch @@ -1675,7 +1695,7 @@ // Test Actions void Main::setupTestActions() { - QMenu *testMenu = menuBar()->addMenu( tr( "&Test" )); + QMenu *testMenu = menuBar()->addMenu( tr( "Test" )); QAction *a; a = new QAction( "Test function 1" , this); @@ -1905,8 +1925,9 @@ return NULL; } -VymModel* Main::getModel(uint id) const +VymModel* Main::getModel(uint id) const //FIXME-2 id not used { + // Used in BugAgent if ( tabWidget->currentPage()) return vymViews.at(tabWidget->currentIndex())->getModel(); return NULL; @@ -2667,13 +2688,49 @@ if (m) m->cut(); } -void Main::editOpenFindWidget() +void Main::editOpenFindWidget() { + if (!findWidget->isVisible()) + { + findWidget->show(); + findWidget->setFocus(); + } else if (!findResultWidget->parentWidget()->isVisible()) + findResultWidget->parentWidget()->show(); + else + { + findWidget->hide(); + findResultWidget->parentWidget()->hide(); + } +} + +void Main::editHideFindWidget() +{ + // findWidget hides itself, but we want + // to have focus back at mapEditor usually + MapEditor *me=currentMapEditor(); + if (me) me->setFocus(); +} + +void Main::editFindNext(QString s) +{ + Qt::CaseSensitivity cs=Qt::CaseInsensitive; + QTextCursor cursor; VymModel *m=currentModel(); - if (m) m->emitShowFindWidget(); + if (m) + { + m->findAll (findResultWidget->getResultModel(),s,cs); + + BranchItem *bi=m->findText(s, cs,cursor); + if (bi) + { + findWidget->setStatus (FindWidget::Success); + } + else + findWidget->setStatus (FindWidget::Failed); + } } -void Main::editFindDuplicateURLs() +void Main::editFindDuplicateURLs() //FIXME-4 feature: use FindResultWidget for display { VymModel *m=currentModel(); if (m) m->findDuplicateURLs(); @@ -3925,6 +3982,11 @@ void Main::testFunction2() { + findResultWidget->setModel (currentModel()); + findResultWidget->addResult ("Test",currentModel()->getSelectedItem()); + + return; + if (!currentMapEditor()) return; currentMapEditor()->testFunction2(); }