MCPcopy Create free account
hub / github.com/MultiMC/Launcher / lessThan

Method lessThan

launcher/ui/pages/instance/ModFolderPage.cpp:77–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75 }
76
77 bool lessThan(const QModelIndex & source_left, const QModelIndex & source_right) const override
78 {
79 ModFolderModel *model = qobject_cast<ModFolderModel *>(sourceModel());
80 if(
81 !model ||
82 !source_left.isValid() ||
83 !source_right.isValid() ||
84 source_left.column() != source_right.column()
85 ) {
86 return QSortFilterProxyModel::lessThan(source_left, source_right);
87 }
88
89 // we are now guaranteed to have two valid indexes in the same column... we love the provided invariants unconditionally and proceed.
90
91 auto column = (ModFolderModel::Columns) source_left.column();
92 bool invert = false;
93 switch(column) {
94 // GH-2550 - sort by enabled/disabled
95 case ModFolderModel::ActiveColumn: {
96 auto dataL = source_left.data(Qt::CheckStateRole).toBool();
97 auto dataR = source_right.data(Qt::CheckStateRole).toBool();
98 if(dataL != dataR) {
99 return dataL > dataR;
100 }
101 // fallthrough
102 invert = sortOrder() == Qt::DescendingOrder;
103 }
104 // GH-2722 - sort mod names in a way that discards "The" prefixes
105 case ModFolderModel::NameColumn: {
106 auto dataL = model->data(model->index(source_left.row(), ModFolderModel::NameColumn)).toString();
107 RemoveThePrefix(dataL);
108 auto dataR = model->data(model->index(source_right.row(), ModFolderModel::NameColumn)).toString();
109 RemoveThePrefix(dataR);
110
111 auto less = dataL.compare(dataR, sortCaseSensitivity());
112 if(less != 0) {
113 return invert ? (less > 0) : (less < 0);
114 }
115 // fallthrough
116 invert = sortOrder() == Qt::DescendingOrder;
117 }
118 // GH-2762 - sort versions by parsing them as versions
119 case ModFolderModel::VersionColumn: {
120 auto dataL = Version(model->data(model->index(source_left.row(), ModFolderModel::VersionColumn)).toString());
121 auto dataR = Version(model->data(model->index(source_right.row(), ModFolderModel::VersionColumn)).toString());
122 return invert ? (dataL > dataR) : (dataL < dataR);
123 }
124 default: {
125 return QSortFilterProxyModel::lessThan(source_left, source_right);
126 }
127 }
128 }
129};
130
131ModFolderPage::ModFolderPage(

Callers

nothing calls this directly

Calls 7

RemoveThePrefixFunction · 0.85
compareMethod · 0.80
VersionClass · 0.50
isValidMethod · 0.45
dataMethod · 0.45
toStringMethod · 0.45
indexMethod · 0.45

Tested by

no test coverage detected