X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d305bee0197c25cd2218a6f546726e245e772ca9..ff53c10f6c3e9d12d90221a5da5d0a465796fae5:/src/dolphinmodel.cpp diff --git a/src/dolphinmodel.cpp b/src/dolphinmodel.cpp index 47b75f1c2..1b94e0339 100644 --- a/src/dolphinmodel.cpp +++ b/src/dolphinmodel.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #endif #include @@ -47,6 +48,8 @@ #include #include +static const char *others = I18N_NOOP2("@title:group Name", "Others"); + DolphinModel::DolphinModel(QObject *parent) : KDirModel(parent) { @@ -79,40 +82,41 @@ QVariant DolphinModel::data(const QModelIndex &index, int role) const if (!theIndex.isValid()) { return retString; } - QVariant data = theIndex.model()->data(theIndex, Qt::DisplayRole); - if (data.toString().size()) { - if (!item.isHidden() && data.toString().at(0).isLetter()) - retString = data.toString().toUpper().at(0); - else if (item.isHidden() && data.toString().at(0) == '.' && - data.toString().at(1).isLetter()) - retString = data.toString().toUpper().at(1); - else if (item.isHidden() && data.toString().at(0) == '.' && - !data.toString().at(1).isLetter()) - retString = i18nc("@title:group Name", "Others"); - else if (item.isHidden() && data.toString().at(0) != '.') - retString = data.toString().toUpper().at(0); - else if (item.isHidden()) - retString = data.toString().toUpper().at(0); - else - { + QString name = data.toString(); + if (!name.isEmpty()) { + if (!item.isHidden() && name.at(0).isLetter()) + retString = name.at(0).toUpper(); + else if (item.isHidden()) { + if (name.at(0) == '.') { + if (name.size() > 1 && name.at(1).isLetter()) { + retString = name.at(1).toUpper(); + } else { + retString = i18nc("@title:group Name", others); + } + } else { + retString = name.at(0).toUpper(); + } + } else { bool validCategory = false; - const QString str(data.toString().toUpper()); + const QString str(name.toUpper()); const QChar* currA = str.unicode(); while (!currA->isNull() && !validCategory) { - if (currA->isLetter()) + if (currA->isLetter()) { validCategory = true; - else if (currA->isDigit()) - return i18nc("@title:group", "Others"); - else + } else if (currA->isDigit()) { + return i18nc("@title:group Name", others); + } else { ++currA; + } } - if (!validCategory) - retString = i18nc("@title:group Name", "Others"); - else + if (!validCategory) { + retString = validCategory ? *currA : i18nc("@title:group Name", others); + } else { retString = *currA; + } } } break; @@ -217,9 +221,9 @@ QVariant DolphinModel::data(const QModelIndex &index, int role) const case DolphinModel::Tags: { retString = tagsForIndex(index); - if (retString.isEmpty()) + if (retString.isEmpty()) { retString = i18nc("@title:group Tags", "Not yet tagged"); - + } break; } #endif @@ -240,6 +244,10 @@ QVariant DolphinModel::data(const QModelIndex &index, int role) const switch (index.column()) { case KDirModel::Name: { retVariant = data(index, KCategorizedSortFilterProxyModel::CategoryDisplayRole); + + if (retVariant == i18nc("@title:group Name", others)) + retVariant = QString(QChar(QChar::ReplacementCharacter)); + break; } @@ -262,7 +270,7 @@ QVariant DolphinModel::data(const QModelIndex &index, int role) const modifiedTime.setTime_t(item.time(KIO::UDSEntry::UDS_MODIFICATION_TIME)); modifiedTime = modifiedTime.toLocalZone(); - retVariant = modifiedTime.date().year() * 100 + modifiedTime.date().month(); + retVariant = -(modifiedTime.date().year() * 100 + modifiedTime.date().month()); break; } @@ -324,7 +332,7 @@ quint32 DolphinModel::ratingForIndex(const QModelIndex& index) const DolphinModel* dolphinModel = static_cast(index.model()); KFileItem item = dolphinModel->itemForIndex(index); if (!item.isNull()) { - const Nepomuk::Resource resource(item.url().url(), Nepomuk::NFO::File()); + const Nepomuk::Resource resource(item.url().url(), Soprano::Vocabulary::Xesam::File()); rating = resource.rating(); } return rating; @@ -342,7 +350,7 @@ QString DolphinModel::tagsForIndex(const QModelIndex& index) const DolphinModel* dolphinModel = static_cast(index.model()); KFileItem item = dolphinModel->itemForIndex(index); if (!item.isNull()) { - const Nepomuk::Resource resource(item.url().url(), Nepomuk::NFO::File()); + const Nepomuk::Resource resource(item.url().url(), Soprano::Vocabulary::Xesam::File()); const QList tags = resource.tags(); QStringList stringList; foreach (const Nepomuk::Tag& tag, tags) {