summaryrefslogtreecommitdiff
path: root/src/qtgroupingproxy.cpp
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2013-06-20 21:55:37 +0200
committerTannin <devnull@localhost>2013-06-20 21:55:37 +0200
commitf8c683f700a3fff30540ff343df2bfba15080e86 (patch)
tree248b6dcea1f45449675c05d4e64ed4b76e976919 /src/qtgroupingproxy.cpp
parent49cbe0349184419530d22782cc670946b61c9f01 (diff)
- some fixes for qt5 compatibility
- hook.dll no longer creates a dump and uninstalls it if an exception is reported that doesn't originate from it - NCC used read-only transactions again because otherwise solid archives become unusably slow. - removed the integrated nexus browser - the mod description and motd are now rendered in QTextBrowser. This (and the above) eliminates the dependency on qtwebkit - removed the direct file download for mod files - reduced CPU usage during downloads by invalidating only one column of the download list. This widget still needs to be replaced - added the complete filename as an option for the modname - applications that require elevation can now be started by invoking an elevated secondary ModOrganizer instance - MO will now register nexus file servers and provides a settings dialog to pick preferred servers. (This preference is not used yet) - worked around 1-2 bugs in QSortFilterProxy - handling of nxm links is now done by an external application. This allows the registration of different applications depending on the game - integrated fomod installer now displays the screenshot in a scalable view - bugfix: integrated fomod installer didn't name output files correctly if the name differs from the source name - bugfix: a successful login to nexus was (sometimes?) not correctly detected as a success - bugfix: top-level entries in QtGroupingProxy were sometimes incorrectly displayed as groups - bugfix: GetPrivateProfile... optimization could cause null-pointer indirection - bugfix: GetCurrentWorkingDirectory caused buffer overflow in case of pre-flighting (buffer size 0) - bugfix: configurator plugin now also uses qt5 (it's currently broken though)
Diffstat (limited to 'src/qtgroupingproxy.cpp')
-rw-r--r--src/qtgroupingproxy.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/qtgroupingproxy.cpp b/src/qtgroupingproxy.cpp
index 3891cc12..f62d45d3 100644
--- a/src/qtgroupingproxy.cpp
+++ b/src/qtgroupingproxy.cpp
@@ -183,7 +183,7 @@ QtGroupingProxy::buildTree()
for (auto iter = m_groupHash.begin(); iter != m_groupHash.end(); ++iter) {
if ((iter.key() == quint32max) ||
- (iter->count() == 1)) {
+ (iter->count() < 2)) {
temp[quint32max].append(iter.value());
if (iter.key() != quint32max) {
rmgroups.push_back(iter.key());
@@ -194,15 +194,15 @@ QtGroupingProxy::buildTree()
}
m_groupHash = temp;
- // second loop is necessary because qt containers can't be iterated from end to
- // removing by index from begin to end is ugly
- for (auto iter = rmgroups.rbegin(); iter != rmgroups.rend(); ++iter) {
+ // second loop is necessary because qt containers can't be iterated from end to front
+ // and removing by index from begin to end is ugly
+ std::sort(rmgroups.begin(), rmgroups.end(), [] (int lhs, int rhs) { return rhs < lhs; });
+ for (auto iter = rmgroups.begin(); iter != rmgroups.end(); ++iter) {
m_groupMaps.removeAt(*iter);
}
}
endResetModel();
-
// restore expand-state
for( int row = 0; row < rowCount(); row++ ) {
QModelIndex idx = index( row, 0, QModelIndex() );
@@ -215,6 +215,8 @@ QtGroupingProxy::buildTree()
QList<int>
QtGroupingProxy::addSourceRow( const QModelIndex &idx )
{
+ // TODO: modeltest reports a discrepance between the "rowAboutToBeInserted" and "rowInserted" events
+
QList<int> updatedGroups;
QList<RowData> groupData = belongsTo( idx );
@@ -624,8 +626,9 @@ QModelIndex
QtGroupingProxy::mapToSource( const QModelIndex &index ) const
{
//qDebug() << "mapToSource: " << index;
- if( !index.isValid() )
+ if( !index.isValid() ) {
return m_rootNode;
+ }
if( isGroup( index ) )
{
@@ -856,8 +859,9 @@ QtGroupingProxy::removeGroup( const QModelIndex &idx )
bool
QtGroupingProxy::hasChildren( const QModelIndex &parent ) const
{
- if( !parent.isValid() )
+ if( !parent.isValid() ) {
return true;
+ }
if( isGroup( parent ) ) {
return !m_groupHash.value( parent.row() ).isEmpty();