insilmaril@726: #include "vymview.h" insilmaril@726: insilmaril@727: #include insilmaril@742: using namespace std; insilmaril@727: insilmaril@732: #include "mainwindow.h" insilmaril@726: #include "mapeditor.h" insilmaril@769: #include "treeeditor.h" insilmaril@726: insilmaril@732: extern Main *mainWindow; insilmaril@732: insilmaril@732: insilmaril@742: VymView::VymView(VymModel *m) insilmaril@726: { insilmaril@742: model=m; insilmaril@742: insilmaril@726: // Create TreeView insilmaril@769: treeEditor=new TreeEditor (model); insilmaril@769: treeEditor->setModel ((QAbstractItemModel*)model); insilmaril@769: //treeEditor->setMinimumWidth (50); insilmaril@761: insilmaril@769: treeEditor->setColumnWidth (0,350); insilmaril@726: insilmaril@769: selModel=treeEditor->selectionModel(); insilmaril@728: model->setSelectionModel (selModel); insilmaril@727: connect ( insilmaril@727: selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), insilmaril@727: this,SLOT (changeSelection(const QItemSelection &,const QItemSelection &))); insilmaril@727: insilmaril@726: // Create good old MapEditor insilmaril@761: mapEditor=model->getMapEditor(); insilmaril@761: if (!mapEditor) mapEditor=new MapEditor (model); insilmaril@728: connect ( insilmaril@728: selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), insilmaril@761: mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &))); insilmaril@772: insilmaril@753: connect ( insilmaril@753: model, SIGNAL (dataChanged(const QModelIndex &, const QModelIndex &)), insilmaril@761: mapEditor,SLOT (updateData(const QModelIndex &) ) ); insilmaril@726: insilmaril@746: // VymModel may want to update selection or other data, e.g. during animation insilmaril@728: connect ( insilmaril@728: model, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)), insilmaril@761: mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &))); insilmaril@761: insilmaril@746: connect ( insilmaril@753: model, SIGNAL (noteHasChanged(QModelIndex) ), insilmaril@753: mainWindow, SLOT (updateNoteEditor (QModelIndex) ) ); insilmaril@746: insilmaril@763: connect ( insilmaril@763: model, SIGNAL (expandAll() ), insilmaril@763: this, SLOT (expandAll () ) ); insilmaril@763: insilmaril@763: connect ( insilmaril@763: model, SIGNAL (showSelection() ), insilmaril@763: this, SLOT (showSelection() ) ); insilmaril@763: insilmaril@726: insilmaril@761: mapEditor->setAntiAlias (mainWindow->isAliased()); insilmaril@761: mapEditor->setSmoothPixmap(mainWindow->hasSmoothPixmapTransform()); insilmaril@726: insilmaril@769: addWidget (treeEditor); insilmaril@761: addWidget (mapEditor); insilmaril@726: insilmaril@726: // Set geometry insilmaril@761: QList widths; insilmaril@761: widths<<120; insilmaril@761: widths<<600; insilmaril@761: setSizes(widths); insilmaril@726: } insilmaril@726: insilmaril@772: VymView::~VymView() insilmaril@772: { insilmaril@772: //cout << "Destructor VymView\n"; insilmaril@772: } insilmaril@772: insilmaril@772: VymModel* VymView::getModel() insilmaril@772: { insilmaril@772: return model; insilmaril@772: } insilmaril@772: insilmaril@772: MapEditor* VymView::getMapEditor() insilmaril@772: { insilmaril@772: return mapEditor; insilmaril@772: } insilmaril@772: insilmaril@769: void VymView::initFocus() insilmaril@769: { insilmaril@769: mapEditor->setFocus(); insilmaril@769: } insilmaril@769: insilmaril@726: QItemSelectionModel* VymView::selectionModel() insilmaril@726: { insilmaril@769: if (treeEditor) insilmaril@728: return selModel; insilmaril@728: else insilmaril@769: std::cout <<"VymView::selectionModel: hey, no treeEditor so far???\n"; insilmaril@726: return NULL; insilmaril@726: } insilmaril@726: insilmaril@746: void VymView::changeSelection (const QItemSelection &newsel, const QItemSelection &oldsel) insilmaril@727: { insilmaril@746: // Notify mainwindow to update satellites like NoteEditor, if needed (model==currenModel...) insilmaril@746: mainWindow->changeSelection (model,newsel,oldsel); // FIXME-3 maybe connect VymModel <-> MainWindow directly? insilmaril@767: showSelection(); insilmaril@727: } insilmaril@727: insilmaril@763: void VymView::expandAll() insilmaril@763: { insilmaril@769: treeEditor->expandAll(); insilmaril@763: } insilmaril@763: insilmaril@763: void VymView::showSelection() insilmaril@763: { insilmaril@772: QModelIndex ix=model->getSelectedIndex(); insilmaril@772: treeEditor->scrollTo( ix, QAbstractItemView::EnsureVisible); insilmaril@772: mapEditor->scrollTo ( ix); insilmaril@763: } insilmaril@763: