aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/util/file_metadata_providers.vala
blob: a77f109cb335f89beae1ddd1ce0dd74c91982210 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using Dino.Entities;
using Xmpp;
using Xmpp.Xep;
using Gtk;

namespace Dino.Ui.Util {

public class AudioVideoFileMetadataProvider: Dino.FileMetadataProvider, Object {
    public bool supports_file(File file) {
        string mime_type = new FileContentType.from_file(file).get_mime_type();
        return mime_type.has_prefix("audio") || mime_type.has_prefix("video");
    }

    public async void fill_metadata(File file, Xep.FileMetadataElement.FileMetadata metadata) {
        MediaFile media = MediaFile.for_file(file);
        if (!media.prepared) {
            media.notify["prepared"].connect((object, pspec) => {
                Idle.add(fill_metadata.callback);
            });
            yield;
        }
        metadata.length = media.duration / 1000;
    }
}

}