vymview.cpp
author insilmaril
Tue, 18 Aug 2009 12:39:07 +0000
changeset 788 78ba80b54bc4
parent 777 8acac4fade1b
child 791 f1006de05c54
permissions -rw-r--r--
Fix for segfault when deleting MCO (invalid QModelIndex needs to be returned in index(TreeItem*) )
insilmaril@726
     1
#include "vymview.h"
insilmaril@726
     2
insilmaril@727
     3
#include <iostream>
insilmaril@742
     4
using namespace std;
insilmaril@727
     5
insilmaril@732
     6
#include "mainwindow.h"
insilmaril@726
     7
#include "mapeditor.h"
insilmaril@769
     8
#include "treeeditor.h"
insilmaril@726
     9
insilmaril@732
    10
extern Main *mainWindow;
insilmaril@732
    11
insilmaril@732
    12
insilmaril@742
    13
VymView::VymView(VymModel *m)
insilmaril@726
    14
{
insilmaril@742
    15
	model=m;
insilmaril@742
    16
insilmaril@726
    17
	// Create TreeView
insilmaril@769
    18
	treeEditor=new TreeEditor (model);
insilmaril@788
    19
	//treeEditor->setModel ((QAbstractItemModel*)model);
insilmaril@769
    20
	//treeEditor->setMinimumWidth (50);
insilmaril@761
    21
insilmaril@788
    22
	treeEditor->setColumnWidth (0,150);
insilmaril@788
    23
	treeEditor->setAnimated (true);
insilmaril@726
    24
insilmaril@788
    25
	
insilmaril@769
    26
	selModel=treeEditor->selectionModel();
insilmaril@728
    27
	model->setSelectionModel (selModel);
insilmaril@727
    28
	connect (
insilmaril@727
    29
		selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), 
insilmaril@727
    30
		this,SLOT (changeSelection(const QItemSelection &,const QItemSelection &)));
insilmaril@727
    31
insilmaril@726
    32
	// Create good old MapEditor
insilmaril@761
    33
	mapEditor=model->getMapEditor();
insilmaril@761
    34
	if (!mapEditor) mapEditor=new MapEditor (model);
insilmaril@728
    35
	connect (
insilmaril@728
    36
		selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), 
insilmaril@761
    37
		mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
insilmaril@772
    38
insilmaril@753
    39
	connect (
insilmaril@775
    40
		selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), 
insilmaril@775
    41
		model,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
insilmaril@775
    42
insilmaril@775
    43
	connect (
insilmaril@753
    44
		model, SIGNAL (dataChanged(const QModelIndex &, const QModelIndex &)), 
insilmaril@761
    45
		mapEditor,SLOT (updateData(const QModelIndex &) ) );
insilmaril@726
    46
insilmaril@746
    47
	// VymModel may want to update selection or other data, e.g. during animation
insilmaril@728
    48
	connect (
insilmaril@728
    49
		model, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), 
insilmaril@761
    50
		mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
insilmaril@761
    51
insilmaril@746
    52
	connect (
insilmaril@753
    53
		model, SIGNAL (noteHasChanged(QModelIndex) ),
insilmaril@753
    54
		mainWindow, SLOT (updateNoteEditor (QModelIndex) ) );
insilmaril@746
    55
		
insilmaril@763
    56
	connect (
insilmaril@763
    57
		model, SIGNAL (expandAll() ),
insilmaril@763
    58
		this, SLOT (expandAll () ) );
insilmaril@763
    59
		
insilmaril@763
    60
	connect (
insilmaril@763
    61
		model, SIGNAL (showSelection() ),
insilmaril@763
    62
		this, SLOT (showSelection() ) );
insilmaril@763
    63
		
insilmaril@726
    64
insilmaril@761
    65
	mapEditor->setAntiAlias (mainWindow->isAliased());
insilmaril@761
    66
	mapEditor->setSmoothPixmap(mainWindow->hasSmoothPixmapTransform());
insilmaril@726
    67
insilmaril@769
    68
	addWidget (treeEditor);
insilmaril@761
    69
	addWidget (mapEditor);
insilmaril@726
    70
insilmaril@788
    71
/*
insilmaril@788
    72
	tv=new QTreeView;
insilmaril@788
    73
	QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel (this);
insilmaril@788
    74
	proxyModel->setDynamicSortFilter (true);
insilmaril@788
    75
	proxyModel->setSourceModel(model);
insilmaril@788
    76
	//proxyModel->setFilterFixedString ("a",Qt::CaseInsensitive,QRegExp::FixedString);
insilmaril@788
    77
	proxyModel->setFilterRegExp(QRegExp("e", Qt::CaseInsensitive));
insilmaril@788
    78
	proxyModel->setFilterKeyColumn(0);
insilmaril@788
    79
	tv->setModel (proxyModel);
insilmaril@788
    80
	addWidget (tv);
insilmaril@788
    81
*/
insilmaril@726
    82
	// Set geometry
insilmaril@761
    83
	QList <int> widths;
insilmaril@788
    84
	widths<<200;
insilmaril@761
    85
	widths<<600;
insilmaril@788
    86
//	widths<<200;
insilmaril@761
    87
	setSizes(widths);
insilmaril@726
    88
}
insilmaril@726
    89
insilmaril@772
    90
VymView::~VymView()
insilmaril@772
    91
{
insilmaril@772
    92
	//cout << "Destructor VymView\n";
insilmaril@772
    93
}
insilmaril@772
    94
insilmaril@772
    95
VymModel* VymView::getModel()
insilmaril@772
    96
{
insilmaril@772
    97
	return model;
insilmaril@772
    98
}
insilmaril@772
    99
insilmaril@772
   100
MapEditor* VymView::getMapEditor()
insilmaril@772
   101
{
insilmaril@772
   102
	return mapEditor;
insilmaril@772
   103
}
insilmaril@772
   104
insilmaril@769
   105
void VymView::initFocus()
insilmaril@769
   106
{
insilmaril@769
   107
	mapEditor->setFocus();
insilmaril@769
   108
}
insilmaril@769
   109
insilmaril@726
   110
QItemSelectionModel* VymView::selectionModel() 
insilmaril@726
   111
{
insilmaril@769
   112
	if (treeEditor) 
insilmaril@728
   113
		return selModel;
insilmaril@728
   114
	else 
insilmaril@769
   115
		std::cout <<"VymView::selectionModel: hey, no treeEditor so far???\n";
insilmaril@726
   116
	return NULL;
insilmaril@726
   117
}
insilmaril@726
   118
insilmaril@746
   119
void VymView::changeSelection (const QItemSelection &newsel, const QItemSelection &oldsel)
insilmaril@727
   120
{
insilmaril@746
   121
	// Notify mainwindow to update satellites like NoteEditor, if needed (model==currenModel...)
insilmaril@777
   122
	mainWindow->changeSelection (model,newsel,oldsel);	// FIXME-5 maybe connect VymModel <-> MainWindow directly?
insilmaril@777
   123
	// would require to also get current model in mainWindow
insilmaril@777
   124
insilmaril@775
   125
	//showSelection();
insilmaril@727
   126
}
insilmaril@727
   127
insilmaril@763
   128
void VymView::expandAll()
insilmaril@763
   129
{
insilmaril@769
   130
	treeEditor->expandAll();
insilmaril@788
   131
	//tv->expandAll();
insilmaril@763
   132
}
insilmaril@763
   133
insilmaril@763
   134
void VymView::showSelection()
insilmaril@763
   135
{
insilmaril@772
   136
	QModelIndex ix=model->getSelectedIndex();
insilmaril@772
   137
	treeEditor->scrollTo( ix, QAbstractItemView::EnsureVisible);
insilmaril@772
   138
	mapEditor->scrollTo ( ix);
insilmaril@763
   139
}
insilmaril@763
   140