+ QTreeView::setModel(model_);
+ init();
+}
+
+void NickView::rowsInserted(const QModelIndex &parent, int start, int end) {
+ QTreeView::rowsInserted(parent, start, end);
+ if(model()->data(parent, NetworkModel::ItemTypeRole) == NetworkModel::UserCategoryItemType && !isExpanded(parent)) {
+ unanimatedExpandAll();
+ }
+}
+
+void NickView::setRootIndex(const QModelIndex &index) {
+ QAbstractItemView::setRootIndex(index);
+ if(index.isValid())
+ unanimatedExpandAll();
+}
+
+QModelIndexList NickView::selectedIndexes() const {
+ QModelIndexList indexList = QTreeView::selectedIndexes();
+
+ // make sure the item we clicked on is first
+ if(indexList.contains(currentIndex())) {
+ indexList.removeAll(currentIndex());
+ indexList.prepend(currentIndex());
+ }
+
+ return indexList;
+}
+
+void NickView::unanimatedExpandAll() {
+ // since of Qt Version 4.8.0 the default expandAll will not properly work if
+ // animations are enabled. Therefore we perform an unanimated expand when a
+ // model is set or a toplevel node is inserted.
+ bool wasAnimated = isAnimated();
+ setAnimated(false);