mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 12:28:52 +00:00
* feat: add torrent-get 'primary-mime-type' to RPC.
This is a cheap way for RPC clients to know what type of content is in a
torrent. This info can be used to display the torrent, e.g. by using an
icon that corresponds to the mime type.
* use size_t for content byte count
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* explicit boolean expressions
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* use uint64_t for content byte counts
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* avoid unnecessary logic branches
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* explicit cast
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* refactor: add an autogenerated mime-type.h header
* chore: maybe fix the win32 FTBFS
* chore: add mime-types.[ch] to xcode
* Squashed commit of the following:
commit 4c7153fa48
Author: Mike Gelfand <mikedld@users.noreply.github.com>
Date: Tue Oct 13 03:15:19 2020 +0300
Remove autotools-based build system (#1465)
* Support .git files (e.g. for worktrees, submodules)
* Fix symlinks in source tarball, switch to TXZ, adjust non-release name
* Remove autotools stuff
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
53 lines
1.2 KiB
C++
53 lines
1.2 KiB
C++
/*
|
|
* This file Copyright (C) 2009-2015 Mnemosyne LLC
|
|
*
|
|
* It may be used under the GNU GPL versions 2 or 3
|
|
* or any future license endorsed by Mnemosyne LLC.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#if defined(_WIN32)
|
|
#include <windows.h> // UINT
|
|
class QFileInfo;
|
|
#else
|
|
#include <unordered_map>
|
|
#include <unordered_set>
|
|
#include "Utils.h" // std::hash<QString>()
|
|
#endif
|
|
|
|
#include <QIcon>
|
|
#include <QString>
|
|
|
|
class QModelIndex;
|
|
|
|
class IconCache
|
|
{
|
|
public:
|
|
static IconCache& get();
|
|
|
|
QIcon folderIcon() const { return folder_icon_; }
|
|
QIcon fileIcon() const { return file_icon_; }
|
|
QIcon guessMimeIcon(QString const& filename, QIcon fallback = {}) const;
|
|
QIcon getMimeTypeIcon(QString const& mime_type, bool multifile) const;
|
|
|
|
protected:
|
|
IconCache();
|
|
|
|
private:
|
|
QIcon const folder_icon_;
|
|
QIcon const file_icon_;
|
|
|
|
mutable std::unordered_map<QString, QIcon> name_to_icon_;
|
|
mutable std::unordered_map<QString, QIcon> name_to_emblem_icon_;
|
|
|
|
#if defined(_WIN32)
|
|
void addAssociatedFileIcon(QFileInfo const& file_info, UINT icon_size, QIcon& icon) const;
|
|
#else
|
|
mutable std::unordered_set<QString> suffixes_;
|
|
mutable std::unordered_map<QString, QIcon> ext_to_icon_;
|
|
QIcon getMimeIcon(QString const& filename) const;
|
|
#endif
|
|
};
|