void UBFeaturesWidget::currentSelected(const QModelIndex ¤t) { if (current.isValid()) { QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() ); /*QString name = model->data(current).toString(); QString path = model->data(current, Qt::UserRole).toString(); eUBLibElementType type = (eUBLibElementType)model->data(current, Qt::UserRole + 1).toInt();*/ UBFeature feature = model->data(current, Qt::UserRole + 1).value<UBFeature>(); if ( feature.isFolder() ) { QString newPath = feature.getFullVirtualPath(); //pathViewer->addPathElement( feature.getThumbnail(), newPath ); controller->setCurrentElement( feature ); model->setFilterFixedString( newPath ); model->invalidate(); switchToListView(); featuresPathModel->setPath( newPath ); featuresPathModel->invalidate(); if ( feature.getType() == FEATURE_FAVORITE ) { mActionBar->setCurrentState( IN_FAVORITE ); } else if (feature.getType() == FEATURE_TRASH) { mActionBar->setCurrentState( IN_TRASH ); } else { mActionBar->setCurrentState( IN_FOLDER ); } } else if ( feature.getType() == FEATURE_SEARCH ) { webView->showElement( feature ); switchToWebView(); } else { featureProperties->showElement( feature ); switchToProperties(); mActionBar->setCurrentState( IN_PROPERTIES ); } } }
void DeferredUpdateTreeView::callDataChanged() { // As the view update is asynchronous, if the original model is wrapped by a QSortFilterProxyModel // it needs to be invalidate in order to rebuild the index mapping and prevent sefgault QSortFilterProxyModel *qsfpm = dynamic_cast<QSortFilterProxyModel*>(model()); if (qsfpm) { qsfpm->invalidate(); } TreeViewUpdateTimer *tvut = static_cast<TreeViewUpdateTimer*>(sender()); QTreeView::dataChanged(tvut->topLeft, tvut->bottomRight); QPair<QModelIndex, QModelIndex> p = qMakePair(tvut->topLeft, tvut->bottomRight); delete _updateTimers[p]; _updateTimers.remove(p); }
void UBFeaturesWidget::deleteElements( const QMimeData & mimeData ) { if ( !mimeData.hasUrls() ) return; QList<QUrl> urls = mimeData.urls(); foreach ( QUrl url, urls ) { if ( controller->isTrash( url ) ) { controller->deleteItem( url ); } else { UBFeature elem = controller->moveItemToFolder( url, controller->getTrashElement() ); controller->removeFromFavorite( url ); featuresModel->addItem( elem ); featuresModel->deleteFavoriteItem( UBFeaturesController::fileNameFromUrl( url ) ); } } QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() ); model->invalidate(); }