const KFileItem *rightFileItem = dirModel->itemForIndex(right);
if (sortRole() == DolphinView::SortByName) { // If we are sorting by name
+ QString leftFileName = leftFileItem->name();
+ QString rightFileName = rightFileItem->name();
+
+ leftFileName = leftFileName.at(0) == '.' ? leftFileName.mid(1) :
+ leftFileName;
+
+ rightFileName = rightFileName.at(0) == '.' ? rightFileName.mid(1) :
+ rightFileName;
+
// We don't care about case for building categories. We also don't
// want here to compare by a natural comparation
- return QString::compare(leftFileItem->name(), rightFileItem->name(), Qt::CaseInsensitive) < 0;
+ return QString::compare(leftFileName, rightFileName, Qt::CaseInsensitive) < 0;
}
else if (sortRole() == DolphinView::SortBySize) { // If we are sorting by size
// If we are sorting by size, show folders first. We will sort them
if (sortRole() == DolphinView::SortByName) { // If we are sorting by name
if ((leftData.type() == QVariant::String) && (rightData.type() ==
QVariant::String)) {
- // Priority: hidden > folders > regular files. If an item is
- // hidden (doesn't matter if file or folder) will have higher
- // preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}
}
}
else if (sortRole() == DolphinView::SortBySize) { // If we are sorting by size
- // If an item is hidden (doesn't matter if file or folder) will have
- // higher preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}
return leftFileItem->size() < rightFileItem->size();
}
else if (sortRole() == DolphinView::SortByDate) {
- // If an item is hidden (doesn't matter if file or folder) will have
- // higher preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}
return leftTime > rightTime;
}
else if (sortRole() == DolphinView::SortByPermissions) {
- // If an item is hidden (doesn't matter if file or folder) will have
- // higher preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}
rightPermissions) < 0;
}
else if (sortRole() == DolphinView::SortByOwner) {
- // If an item is hidden (doesn't matter if file or folder) will have
- // higher preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}
rightOwner.toLower()) < 0;
}
else if (sortRole() == DolphinView::SortByGroup) {
- // If an item is hidden (doesn't matter if file or folder) will have
- // higher preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}
rightGroup.toLower()) < 0;
}
else if (sortRole() == DolphinView::SortByType) {
- // If an item is hidden (doesn't matter if file or folder) will have
- // higher preference than a non-hidden item
- if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
+ // On our priority, folders go above regular files
+ if (leftFileItem->isDir() && !rightFileItem->isDir()) {
return true;
}
- else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
+ else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
return false;
}
- // On our priority, folders go above regular files
- if (leftFileItem->isDir() && !rightFileItem->isDir()) {
+ // Hidden elements go before visible ones, if they both are
+ // folders or files
+ if (leftFileItem->isHidden() && !rightFileItem->isHidden()) {
return true;
}
- else if (!leftFileItem->isDir() && rightFileItem->isDir()) {
+ else if (!leftFileItem->isHidden() && rightFileItem->isHidden()) {
return false;
}