30 #ifndef KLFLIBVIEW_P_H
31 #define KLFLIBVIEW_P_H
35 #include <QApplication>
36 #include <QStringList>
37 #include <QAbstractItemView>
42 #include <QDragEnterEvent>
43 #include <QDragMoveEvent>
47 #include <QFileDialog>
49 #include <QDesktopServices>
53 #include <ui_klfliblocalfilewidget.h>
168 if (pContainsNonAllocated) {
170 for (insertPos = 0; insertPos < QList<N>::size() &&
QList<N>::at(insertPos).allocated; ++insertPos)
174 pContainsNonAllocated =
false;
186 node.allocated =
false;
187 pContainsNonAllocated =
true;
202 bool pContainsNonAllocated;
215 pIsFetchingMore =
false;
218 pLastSortOrder = Qt::DescendingOrder;
259 void fetchMore(NodeId parentId,
int batchCount = -1);
274 void treeInsertEntry(
const EntryNode& e,
bool isRebuildingCache =
false);
280 EntryNode
treeTakeEntry(
const NodeId& e,
bool notifyQtApi =
true);
290 bool notifyQtApi =
false,
bool newlyCreatedAreChildrenFetched =
true);
296 : cache(c), entrysorter(es), groupCategories(groupcategories)
307 bool groupCategories;
320 pLastSortPropId = propId;
321 pLastSortOrder = order;
325 void sortCategory(NodeId category, KLFLibModelSorter *sorter,
bool rootCall =
true);
372 void insertCategoryStringInSuggestionCache(
const QString& category)
374 insertCategoryStringInSuggestionCache(category.
split(
'/', QString::SkipEmptyParts));
378 void insertCategoryStringInSuggestionCache(
const QStringList& catelements)
381 for (
int kl = catelements.size()-1; kl >= 0; --kl) {
385 pCatListCache.insert(qLowerBound(pCatListCache.begin(), pCatListCache.end(), c), c);
389 bool pIsFetchingMore;
392 Qt::SortOrder pLastSortOrder;
394 KLF_DEBUG_DECLARE_ASSIGNABLE_REF_INSTANCE() ;
422 klfDbg(
"KLFLibDefViewCommon::evDragEnter: drop flags are "<<fl<<
"; this viewtype="<<
pViewType ) ;
425 thisView()->setDropIndicatorShown(showdropindic);
431 qDebug(
"Ignored drag enter event.");
435 klfDbg(
"Accepted drag enter event issued at pos="<<pos ) ;
437 QDragEnterEvent fakeevent(de->pos(), de->dropAction(), de->mimeData(), de->mouseButtons(),
438 de->keyboardModifiers());
439 qApp->sendEvent(
thisView()->viewport(), &fakeevent);
447 klfDbg(
"KLFLibDefViewCommon::evDragMove: flags are "<<fl<<
"; pos is "<<pos ) ;
456 de->setDropAction(Qt::MoveAction);
458 de->setDropAction(Qt::CopyAction);
462 QDragMoveEvent fakeevent(de->pos(), de->dropAction(), de->mimeData(), de->mouseButtons(),
463 de->keyboardModifiers());
464 qApp->sendEvent(
thisView()->viewport(), &fakeevent);
477 klfDbg(
"Delta is "<<delta ) ;
480 qApp->sendEvent(
thisView()->viewport(), &fakeevent);
486 klfDbg(
"Drop event at position="<<de->
pos() ) ;
488 de->keyboardModifiers());
489 qApp->sendEvent(
thisView()->viewport(), &fakeevent);
505 klfDbg(
"Normal DRAG..." ) ;
514 if (indexes.count() == 0)
524 Qt::DropAction defaultDropAction = Qt::IgnoreAction;
526 if (supportedActions & Qt::CopyAction &&
527 thisView()->dragDropMode() != QAbstractItemView::InternalMove)
528 defaultDropAction = Qt::CopyAction;
530 drag->exec(supportedActions, defaultDropAction);
535 Q_UNUSED(firstOrLast)
541 klfDbg(
"\texploring item it="<<it<<
"; bottom="<<
thisConstView()->visualRect(it).bottom() ) ;
595 if (
object ==
thisView()->viewport())
596 return event->pos() +
QPoint(horoffset, veroffset);
598 return thisView()->viewport()->mapFromGlobal(
thisView()->mapToGlobal(event->pos()))
599 +
QPoint(horoffset, veroffset);
600 return event->pos() +
QPoint(horoffset, veroffset);
606 qWarning()<<
"KLFLibDefViewCommon::setTheModel: model is NULL or not a KLFLibModel :"<<model<<
" !";
638 installEventFilter(
this);
639 viewport()->installEventFilter(
this);
644 return QTreeView::eventFilter(
object, event);
647 if (event->
type() == QEvent::DragEnter) {
649 }
else if (event->
type() == QEvent::DragMove) {
651 }
else if (event->
type() == QEvent::Drop) {
659 return QTreeView::eventFilter(
object, event);
663 QTreeView::setModel(model);
677 for (k = 0; k < mil.size(); ++k) {
681 while (idx.
parent().isValid()) {
707 QTreeView::paintEvent(event);
729 installEventFilter(
this);
730 viewport()->installEventFilter(
this);
738 if (event->
type() == QEvent::DragEnter) {
740 }
else if (event->
type() == QEvent::DragMove) {
742 }
else if (event->
type() == QEvent::Drop) {
750 return QListView::eventFilter(
object, event);
754 QListView::setModel(model);
760 scheduleDelayedItemsLayout();
764 klfDbg(
"scheduling an items layout...");
766 scheduleDelayedItemsLayout();
786 QListView::paintEvent(event);
792 virtual void startDrag(Qt::DropActions supportedActions) {
797 if (!event->spontaneous()) {
800 scheduleDelayedItemsLayout();
804 QListView::showEvent(event);
850 QDir::AllEntries|QDir::AllDirs|QDir::NoDotAndDotDot,
851 QDir::DirsFirst|QDir::IgnoreCase,
this);
854 fileNameCompleter->
setModel(dirModel);
855 txtFile->setCompleter(fileNameCompleter);
939 QString path = txtFile->text();
946 pathfilter = pathft.
filter;
952 int pathfilterN = -1;
964 if (pathfilterN >= 0)
965 filters.removeAt(pathfilterN);
966 filters.prepend(tr(
"All Known Files (%1)").arg(fpatterns.
join(
" ")));
967 if (pathfilterN >= 0)
968 filters.prepend(pathfilter);
970 if (pathfilterN >= 0) {
971 filters.removeAt(pathfilterN);
972 filters.prepend(pathfilter);
975 filters.append(tr(
"All Files (*)"));
977 QString title = tr(
"Select Library Resource File");
984 qWarning()<<
"KLFLibLocalFileOpenWidget::browseFileName: bad bt="<<bt;
992 txtFile->setText(name);
1024 return txtFile->text();