mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
Split Image Size into Width/Height
Summary: This patch splits the single property "Image Size" into "Width" and "Height", providing more fine-tuned control for power users. FEATURE: 374559 Test Plan: - Sorting works correctly - No real change, only exposed differently Reviewers: #dolphin, elvisangelaccio, ngraham Reviewed By: #dolphin, elvisangelaccio, ngraham Subscribers: ngraham, elvisangelaccio Differential Revision: https://phabricator.kde.org/D11816
This commit is contained in:
parent
6f3b0e3d00
commit
1441fefc07
|
@ -1846,16 +1846,10 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
|
|||
break;
|
||||
}
|
||||
|
||||
case RatingRole: {
|
||||
result = a->values.value("rating").toInt() - b->values.value("rating").toInt();
|
||||
break;
|
||||
}
|
||||
|
||||
case ImageSizeRole: {
|
||||
// Alway use a natural comparing to interpret the numbers of a string like
|
||||
// "1600 x 1200" for having a correct sorting.
|
||||
result = collator.compare(a->values.value("imageSize").toString(),
|
||||
b->values.value("imageSize").toString());
|
||||
case RatingRole:
|
||||
case WidthRole:
|
||||
case HeightRole: {
|
||||
result = a->values.value(roleForType(m_sortRole)).toInt() - b->values.value(roleForType(m_sortRole)).toInt();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2305,7 +2299,8 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count)
|
|||
{ "wordCount", WordCountRole, I18N_NOOP2_NOSTRIP("@label", "Word Count"), I18N_NOOP2_NOSTRIP("@label", "Document"), true, true },
|
||||
{ "lineCount", LineCountRole, I18N_NOOP2_NOSTRIP("@label", "Line Count"), I18N_NOOP2_NOSTRIP("@label", "Document"), true, true },
|
||||
{ "imageDateTime", ImageDateTimeRole, I18N_NOOP2_NOSTRIP("@label", "Date Photographed"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
|
||||
{ "imageSize", ImageSizeRole, I18N_NOOP2_NOSTRIP("@label", "Image Size"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
|
||||
{ "width", WidthRole, I18N_NOOP2_NOSTRIP("@label", "Width"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
|
||||
{ "height", HeightRole, I18N_NOOP2_NOSTRIP("@label", "Height"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
|
||||
{ "orientation", OrientationRole, I18N_NOOP2_NOSTRIP("@label", "Orientation"), I18N_NOOP2_NOSTRIP("@label", "Image"), true, true },
|
||||
{ "artist", ArtistRole, I18N_NOOP2_NOSTRIP("@label", "Artist"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
|
||||
{ "genre", GenreRole, I18N_NOOP2_NOSTRIP("@label", "Genre"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
|
||||
|
|
|
@ -286,7 +286,7 @@ private:
|
|||
NoRole, NameRole, SizeRole, ModificationTimeRole, CreationTimeRole, AccessTimeRole, PermissionsRole, OwnerRole,
|
||||
GroupRole, TypeRole, DestinationRole, PathRole, DeletionTimeRole,
|
||||
// User visible roles available with Baloo:
|
||||
CommentRole, TagsRole, RatingRole, ImageSizeRole, ImageDateTimeRole, OrientationRole,
|
||||
CommentRole, TagsRole, RatingRole, WidthRole, HeightRole, ImageDateTimeRole, OrientationRole,
|
||||
WordCountRole, TitleRole, LineCountRole, ArtistRole, GenreRole, AlbumRole, DurationRole, TrackRole, ReleaseYearRole,
|
||||
BitrateRole, OriginUrlRole,
|
||||
// Non-visible roles:
|
||||
|
|
|
@ -56,9 +56,6 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f
|
|||
{
|
||||
QHash<QByteArray, QVariant> values;
|
||||
|
||||
int width = -1;
|
||||
int height = -1;
|
||||
|
||||
QMapIterator<KFileMetaData::Property::Property, QVariant> it(file.properties());
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
|
@ -72,23 +69,7 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f
|
|||
|
||||
const QVariant value = it.value();
|
||||
|
||||
if (role == "imageSize") {
|
||||
// Merge the two properties for width and height
|
||||
// as one string into the "imageSize" role
|
||||
if (property == QLatin1String("width")) {
|
||||
width = value.toInt();
|
||||
}
|
||||
else if (property == QLatin1String("height")) {
|
||||
height = value.toInt();
|
||||
}
|
||||
|
||||
if (width >= 0 && height >= 0) {
|
||||
QString widthAndHeight = QString::number(width);
|
||||
widthAndHeight += QLatin1String(" x ");
|
||||
widthAndHeight += QString::number(height);
|
||||
values.insert(role, widthAndHeight);
|
||||
}
|
||||
} else if (role == "orientation") {
|
||||
if (role == "orientation") {
|
||||
const QString orientation = orientationFromValue(value.toInt());
|
||||
values.insert(role, orientation);
|
||||
} else if (role == "duration") {
|
||||
|
@ -135,8 +116,7 @@ KBalooRolesProvider::KBalooRolesProvider() :
|
|||
};
|
||||
|
||||
// Mapping from the URIs to the KFileItemModel roles. Note that this must not be
|
||||
// a 1:1 mapping: One role may contain several URI-values (e.g. the URIs for height and
|
||||
// width of an image are mapped to the role "imageSize")
|
||||
// a 1:1 mapping: One role may contain several URI-values
|
||||
static const PropertyInfo propertyInfoList[] = {
|
||||
{ "rating", "rating" },
|
||||
{ "tag", "tags" },
|
||||
|
@ -144,8 +124,8 @@ KBalooRolesProvider::KBalooRolesProvider() :
|
|||
{ "title", "title" },
|
||||
{ "wordCount", "wordCount" },
|
||||
{ "lineCount", "lineCount" },
|
||||
{ "width", "imageSize" },
|
||||
{ "height", "imageSize" },
|
||||
{ "width", "width" },
|
||||
{ "height", "height" },
|
||||
{ "imageDateTime", "imageDateTime"},
|
||||
{ "nexif.orientation", "orientation", },
|
||||
{ "artist", "artist" },
|
||||
|
|
|
@ -456,7 +456,7 @@ void PlacesItemModel::initializeDefaultViewProperties() const
|
|||
} else if (path == QLatin1String("/images")) {
|
||||
props.setViewMode(DolphinView::IconsView);
|
||||
props.setPreviewsShown(true);
|
||||
props.setVisibleRoles({"text", "imageSize"});
|
||||
props.setVisibleRoles({"text", "height", "width"});
|
||||
} else if (path == QLatin1String("/audio")) {
|
||||
props.setViewMode(DolphinView::DetailsView);
|
||||
props.setPreviewsShown(false);
|
||||
|
|
Loading…
Reference in a new issue