Add Bitrate to Dolphin's Additional Information

Summary:
Adds Bitrate to Dolphin's Additional information columns.

BUG: 368418

Test Plan:
Tested in KDE Neon. A bitrate column can be added and shows the bitrate in kb/s:

{F3907210}

Works for audio as well as video files!

Reviewers: #dolphin, #kde_applications, broulik, aacid, dfaure, emmanuelp

Reviewed By: #dolphin, #kde_applications, emmanuelp

Subscribers: rkflx, alexeymin, anthonyfieroni

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D7763
This commit is contained in:
Nate Graham 2017-09-21 22:55:41 -06:00
parent 3749b55527
commit 76698ff82c
4 changed files with 21 additions and 1 deletions

View file

@ -2314,6 +2314,7 @@ const KFileItemModel::RoleInfoMap* KFileItemModel::rolesInfoMap(int& count)
{ "genre", GenreRole, I18N_NOOP2_NOSTRIP("@label", "Genre"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "album", AlbumRole, I18N_NOOP2_NOSTRIP("@label", "Album"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "duration", DurationRole, I18N_NOOP2_NOSTRIP("@label", "Duration"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "bitrate", BitrateRole, I18N_NOOP2_NOSTRIP("@label", "Bitrate"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "track", TrackRole, I18N_NOOP2_NOSTRIP("@label", "Track"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "releaseYear", ReleaseYearRole, I18N_NOOP2_NOSTRIP("@label", "Release Year"), I18N_NOOP2_NOSTRIP("@label", "Audio"), true, true },
{ "path", PathRole, I18N_NOOP2_NOSTRIP("@label", "Path"), I18N_NOOP2_NOSTRIP("@label", "Other"), false, false },

View file

@ -287,7 +287,7 @@ private:
// User visible roles available with Baloo:
CommentRole, TagsRole, RatingRole, ImageSizeRole, OrientationRole,
WordCountRole, TitleRole, LineCountRole, ArtistRole, GenreRole, AlbumRole, DurationRole, TrackRole, ReleaseYearRole,
OriginUrlRole,
BitrateRole, OriginUrlRole,
// Non-visible roles:
IsDirRole, IsLinkRole, IsHiddenRole, IsExpandedRole, IsExpandableRole, ExpandedParentsCountRole,
// Mandatory last entry:

View file

@ -26,6 +26,7 @@
#include <Baloo/File>
#include <KFileMetaData/PropertyInfo>
#include <KFileMetaData/UserMetaData>
#include <KFormat>
#include <QTime>
#include <QMap>
@ -95,6 +96,9 @@ QHash<QByteArray, QVariant> KBalooRolesProvider::roleValues(const Baloo::File& f
} else if (role == "duration") {
const QString duration = durationFromValue(value.toInt());
values.insert(role, duration);
} else if (role == "bitrate") {
const QString bitrate = bitrateFromValue(value.toInt());
values.insert(role, bitrate);
} else {
values.insert(role, value.toString());
}
@ -149,6 +153,7 @@ KBalooRolesProvider::KBalooRolesProvider() :
{ "genre", "genre" },
{ "album", "album" },
{ "duration", "duration" },
{ "bitRate", "bitrate" },
{ "releaseYear", "releaseYear" },
{ "trackNumber", "track" },
{ "originUrl", "originUrl" }
@ -194,3 +199,11 @@ QString KBalooRolesProvider::durationFromValue(int value) const
return duration.toString(QStringLiteral("hh:mm:ss"));
}
QString KBalooRolesProvider::bitrateFromValue(int value) const
{
KFormat form;
QString bitrate = i18nc("@label bitrate (per second)", "%1/s", form.formatByteSize(value, 1, KFormat::MetricBinaryDialect));
return bitrate;
}

View file

@ -79,6 +79,12 @@ private:
*/
QString durationFromValue(int value) const;
/**
* @return Bitrate in the format N kB/s for the value given
* in b/s.
*/
QString bitrateFromValue(int value) const;
private:
QSet<QByteArray> m_roles;
QHash<QString, QByteArray> m_roleForProperty;