mainwindow.cpp
changeset 829 832e96c9abb6
parent 825 1ad892c1a709
child 830 b5537d245165
     1.1 --- a/mainwindow.cpp	Mon Mar 08 12:22:15 2010 +0000
     1.2 +++ b/mainwindow.cpp	Mon Mar 08 12:24:26 2010 +0000
     1.3 @@ -12,6 +12,7 @@
     1.4  #include "exports.h"
     1.5  #include "file.h"
     1.6  #include "findresultwidget.h"
     1.7 +#include "findwidget.h"
     1.8  #include "flagrow.h"
     1.9  #include "historywindow.h"
    1.10  #include "imports.h"
    1.11 @@ -42,6 +43,8 @@
    1.12  
    1.13  extern TextEditor *textEditor;
    1.14  extern Main *mainWindow;
    1.15 +extern FindWidget *findWidget;
    1.16 +extern FindResultWidget *findResultWidget;
    1.17  extern QString tmpVymDir;
    1.18  extern QString clipboardDir;
    1.19  extern QString clipboardFile;
    1.20 @@ -124,15 +127,16 @@
    1.21  	makeSubDirs (clipboardDir);
    1.22  	clipboardEmpty=true;
    1.23  
    1.24 +	// Remember PID of our friendly webbrowser
    1.25  	browserPID=new qint64;
    1.26  	*browserPID=0;
    1.27  
    1.28 -	// Dock widgets //FIXME-2 testing...
    1.29 -
    1.30 -	FindResultWidget *findResultWidget=new FindResultWidget;
    1.31 -	QDockWidget *dw= new QDockWidget ("Dock Widget",this);
    1.32 +	// Dock widgets 
    1.33 +	findResultWidget=new FindResultWidget ();
    1.34 +	QDockWidget *dw= new QDockWidget (tr ("Search results","FindResultWidget"),this);
    1.35  	dw->setWidget (findResultWidget);
    1.36 -	dw->hide();
    1.37 +	dw->setObjectName ("FindResultWidget");
    1.38 +	dw->hide();	
    1.39  	addDockWidget (Qt::RightDockWidgetArea,dw);
    1.40  
    1.41  	// Satellite windows //////////////////////////////////////////
    1.42 @@ -197,12 +201,28 @@
    1.43  	// width of xLinksMenu
    1.44  	xLinkMenuWidth=60;
    1.45  
    1.46 +	// Create Layout
    1.47 +	QWidget* centralWidget = new QWidget (this);
    1.48 +	QVBoxLayout *layout=new QVBoxLayout (centralWidget);
    1.49 +	setCentralWidget(centralWidget);	
    1.50 +
    1.51  	// Create tab widget which holds the maps
    1.52 -	tabWidget= new QTabWidget (this);
    1.53 +	tabWidget= new QTabWidget (centralWidget);
    1.54  	connect( tabWidget, SIGNAL( currentChanged( QWidget * ) ), 
    1.55  		this, SLOT( editorChanged( QWidget * ) ) );
    1.56  
    1.57 -	setCentralWidget(tabWidget);	
    1.58 +	// Create findWidget
    1.59 +	findWidget = new FindWidget (centralWidget);
    1.60 +	findWidget->hide();
    1.61 +	layout->addWidget (tabWidget);
    1.62 +	layout->addWidget (findWidget);
    1.63 +
    1.64 +	connect (
    1.65 +		findWidget, SIGNAL (nextButton (QString) ), 
    1.66 +		this, SLOT (editFindNext(QString) ) );
    1.67 +    connect (
    1.68 +        findWidget , SIGNAL (hideFindWidget() ),
    1.69 +        this, SLOT (editHideFindWidget() ) );
    1.70  
    1.71  	setupFileActions();
    1.72  	setupEditActions();
    1.73 @@ -753,7 +773,7 @@
    1.74  	a->addTo( tb );
    1.75  	switchboard.addConnection(a,tr("Edit","Shortcut group"));
    1.76  	editMenu->addAction (a);
    1.77 -	actionSortBackChildren=a;
    1.78 +	actionSortBackChildren=a;	//FIXME-2 is toggle action? why?
    1.79  
    1.80  	alt = new QAction( QPixmap(flagsPath+"flag-scrolled-right.png"), tr( "Scroll branch","Edit menu" ), this);
    1.81  	alt->setShortcut ( Qt::Key_S );					// Scroll branch
    1.82 @@ -1675,7 +1695,7 @@
    1.83  // Test Actions
    1.84  void Main::setupTestActions()
    1.85  {
    1.86 -	QMenu *testMenu = menuBar()->addMenu( tr( "&Test" ));
    1.87 +	QMenu *testMenu = menuBar()->addMenu( tr( "Test" ));
    1.88  
    1.89  	QAction *a;
    1.90  	a = new QAction( "Test function 1" , this);
    1.91 @@ -1905,8 +1925,9 @@
    1.92  	return NULL;	
    1.93  }
    1.94  
    1.95 -VymModel* Main::getModel(uint id) const
    1.96 +VymModel* Main::getModel(uint id) const	//FIXME-2 id not used
    1.97  {
    1.98 +	// Used in BugAgent
    1.99  	if ( tabWidget->currentPage())
   1.100  		return vymViews.at(tabWidget->currentIndex())->getModel();
   1.101  	return NULL;	
   1.102 @@ -2667,13 +2688,49 @@
   1.103  	if (m) m->cut();
   1.104  }
   1.105  
   1.106 -void Main::editOpenFindWidget()
   1.107 +void Main::editOpenFindWidget()  
   1.108  {
   1.109 +	if (!findWidget->isVisible())
   1.110 +	{
   1.111 +		findWidget->show();
   1.112 +		findWidget->setFocus();
   1.113 +	} else if (!findResultWidget->parentWidget()->isVisible())
   1.114 +		findResultWidget->parentWidget()->show();
   1.115 +	else 
   1.116 +	{
   1.117 +		findWidget->hide();
   1.118 +		findResultWidget->parentWidget()->hide();
   1.119 +	}
   1.120 +}
   1.121 +
   1.122 +void Main::editHideFindWidget()
   1.123 +{
   1.124 +    // findWidget hides itself, but we want
   1.125 +    // to have focus back at mapEditor usually
   1.126 +	MapEditor *me=currentMapEditor();
   1.127 +    if (me) me->setFocus();
   1.128 +}
   1.129 +
   1.130 +void Main::editFindNext(QString s)  
   1.131 +{
   1.132 +	Qt::CaseSensitivity cs=Qt::CaseInsensitive;
   1.133 +	QTextCursor cursor;
   1.134  	VymModel *m=currentModel();
   1.135 -	if (m) m->emitShowFindWidget();
   1.136 +	if (m) 
   1.137 +	{
   1.138 +		m->findAll (findResultWidget->getResultModel(),s,cs);
   1.139 +
   1.140 +		BranchItem *bi=m->findText(s, cs,cursor);
   1.141 +		if (bi)
   1.142 +		{
   1.143 +			findWidget->setStatus (FindWidget::Success);
   1.144 +		}	
   1.145 +		else
   1.146 +			findWidget->setStatus (FindWidget::Failed);
   1.147 +	}
   1.148  }
   1.149  
   1.150 -void Main::editFindDuplicateURLs()
   1.151 +void Main::editFindDuplicateURLs() //FIXME-4 feature: use FindResultWidget for display
   1.152  {
   1.153  	VymModel *m=currentModel();
   1.154  	if (m) m->findDuplicateURLs();
   1.155 @@ -3925,6 +3982,11 @@
   1.156  
   1.157  void Main::testFunction2()
   1.158  {
   1.159 +	findResultWidget->setModel (currentModel());
   1.160 +	findResultWidget->addResult ("Test",currentModel()->getSelectedItem());
   1.161 +	
   1.162 +	return;
   1.163 +
   1.164  	if (!currentMapEditor()) return;
   1.165  	currentMapEditor()->testFunction2();
   1.166  }