6 #include "branchitem.h"
7 #include "findwidget.h"
8 #include "mainwindow.h"
10 #include "treeeditor.h"
12 extern Main *mainWindow;
15 VymView::VymView(VymModel *m)
20 findWidget=new FindWidget (this);
23 treeEditor=new TreeEditor (model);
24 //treeEditor->setModel ((QAbstractItemModel*)model);
25 //treeEditor->setMinimumWidth (50);
27 treeEditor->setColumnWidth (0,150);
28 treeEditor->setAnimated (true);
30 // FIXME-2 use proxySelModel=treeEditor->selectionModel();
31 selModel=new QItemSelectionModel (model);
33 //model->setSelectionModel (proxySelModel);
34 model->setSelectionModel (selModel);
35 treeEditor->setSelectionModel (selModel);
37 // Create good old MapEditor
38 mapEditor=model->getMapEditor();
39 if (!mapEditor) mapEditor=new MapEditor (model);
42 QVBoxLayout* mainLayout = new QVBoxLayout (this);
43 QSplitter *splitter= new QSplitter;
45 QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
46 //sizePolicy.setHorizontalStretch(0);
47 //sizePolicy.setVerticalStretch(0);
48 //sizePolicy.setHeightForWidth(this->sizePolicy().hasHeightForWidth());
49 splitter->setSizePolicy(sizePolicy);
50 mainLayout->addWidget (splitter);
51 mainLayout->addWidget (findWidget);
58 proxySelModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
59 this,SLOT (changeProxySelection(const QItemSelection &,const QItemSelection &)));
62 // Selection in Model changed
64 selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
65 this,SLOT (changeSelection(const QItemSelection &,const QItemSelection &)));
67 // Tell MapEditor to update selection
68 /* FIXME-3 done implicit here in VymView
70 selModel, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
71 mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
74 // FIXME-2 testing, if that reenables updating selbox during animation
76 model, SIGNAL (selectionChanged(const QItemSelection &, const QItemSelection &)),
77 mapEditor,SLOT (updateSelection(const QItemSelection &,const QItemSelection &)));
79 // Connect data changed signals
81 model, SIGNAL (dataChanged(const QModelIndex &, const QModelIndex &)),
82 mapEditor,SLOT (updateData(const QModelIndex &) ) );
85 model, SIGNAL (sortFilterChanged (const QString &)),
86 treeEditor, SLOT (setSortFilter (const QString &) ) );
89 model, SIGNAL (noteHasChanged(QModelIndex) ),
90 mainWindow, SLOT (updateNoteEditor (QModelIndex) ) );
93 model, SIGNAL (expandAll() ),
94 this, SLOT (expandAll () ) );
97 model, SIGNAL (expandOneLevel() ),
98 this, SLOT (expandOneLevel() ) );
101 model, SIGNAL (collapseOneLevel() ),
102 this, SLOT (collapseOneLevel() ) );
105 model, SIGNAL (showSelection() ),
106 this, SLOT (showSelection() ) );
110 model, SIGNAL (showFindWidget() ),
111 this, SLOT (showFindWidget() ) );
114 findWidget, SIGNAL (nextButton (QString) ),
115 this, SLOT (findNext(QString) ) );
118 mapEditor->setAntiAlias (mainWindow->isAliased());
119 mapEditor->setSmoothPixmap(mainWindow->hasSmoothPixmapTransform());
121 splitter->addWidget (treeEditor);
122 splitter->addWidget (mapEditor);
128 splitter->setSizes(widths);
133 //cout << "Destructor VymView\n";
136 VymModel* VymView::getModel()
141 MapEditor* VymView::getMapEditor()
146 void VymView::initFocus()
148 mapEditor->setFocus();
151 void VymView::changeSelection (const QItemSelection &newsel, const QItemSelection &oldsel)
153 //cout << "VV::changeSelection newsel.count="<<newsel.indexes().count()<<endl;
155 mainWindow->changeSelection (model,newsel,oldsel);
156 mapEditor->updateSelection (newsel,oldsel);
158 if (newsel.indexes().count()>0)
161 /* FIXME-2 use proxymodel
162 proxySelModel->select (
163 treeEditor->getProxyModel()->mapSelectionFromSource (newsel),
164 QItemSelectionModel::ClearAndSelect );
167 QModelIndex ix=newsel.indexes().first();
168 selModel->setCurrentIndex (ix,QItemSelectionModel::ClearAndSelect );
169 treeEditor->setCurrentIndex (ix);
175 void VymView::changeProxySelection (const QItemSelection &newsel, const QItemSelection &oldsel)
177 // Notify mainwindow to update satellites, but map selection to
178 // original model first
180 //cout << "VV::changeProxySelection newsel.count="<<newsel.indexes().count()<<endl;
181 if (!newsel.indexes().isEmpty())
183 /* FIXME-2 need to set current, too
185 proxySelModel->setCurrentIndex (
186 newsel.indexes().first(),
187 QItemSelectionModel::ClearAndSelect );
188 treeEditor->setCurrentIndex (newsel.indexes().first() );
191 // Re-emit but map selection first
193 treeEditor->getProxyModel()->mapSelectionToSource (newsel),
194 QItemSelectionModel::ClearAndSelect );
199 void VymView::expandAll()
201 treeEditor->expandAll();
204 void VymView::expandOneLevel()
208 BranchItem *cur=NULL;
209 BranchItem *prev=NULL;
212 // Find level to expand
213 model->nextBranch(cur,prev);
216 // FIXME-2 use proxy pix=treeEditor->getProxyModel()->mapFromSource (model->index (cur));
217 pix=model->index (cur);
219 if (!treeEditor->isExpanded(pix) && d < level)
221 model->nextBranch(cur,prev);
224 // Expand all to level
227 model->nextBranch(cur,prev);
230 // FIXME-2 use proxy pix=treeEditor->getProxyModel()->mapFromSource (model->index (cur));
231 pix=model->index (cur);
233 if (!treeEditor->isExpanded(pix) && d <= level && cur->branchCount()>0)
234 treeEditor->setExpanded(pix,true);
235 model->nextBranch(cur,prev);
237 /* FIXME-3 optimize expanding by using flat version of next
238 model->nextBranch(cur,prev,false);
241 cout << "ok: "<<cur->getHeadingStd()<<endl./re/videochristinaprison1_wmvl.wmv
243 model->nextBranch(cur,prev,false);
248 void VymView::collapseOneLevel()
252 BranchItem *cur=NULL;
253 BranchItem *prev=NULL;
256 // Find level to collapse
257 model->nextBranch(cur,prev);
260 // FIXME-2 use proxy pix=treeEditor->getProxyModel()->mapFromSource (model->index (cur));
261 pix=model->index (cur);
263 if (treeEditor->isExpanded(pix) && d > level)
265 model->nextBranch(cur,prev);
268 // collapse all to level
271 model->nextBranch(cur,prev);
274 // FIXME-2 use proxy pix=treeEditor->getProxyModel()->mapFromSource (model->index (cur));
275 pix=model->index (cur);
277 if (treeEditor->isExpanded(pix) && d >= level)
278 treeEditor->setExpanded(pix,false);
279 model->nextBranch(cur,prev);
283 void VymView::showSelection()
285 QModelIndex ix=model->getSelectedIndex();
286 treeEditor->scrollTo( ix, QAbstractItemView::EnsureVisible);
287 mapEditor->scrollTo ( ix); // FIXME-3 also called from MapEditor::updateSelection...
290 void VymView::showFindWidget()
295 void VymView::findNext (QString s)
298 BranchItem *bi=model->findText(s, cs);
301 //statusBar()->message( "Found: " + bi->getHeading(), statusbarTime );
302 cout << "VV::Found!\n";
305 cout << "VV::Nothing found!\n";
306 //QMessageBox::information( findWindow, tr( "VYM -Information:" ),
307 // tr("No matches found for \"%1\"").arg(s));