So far all subclasses implemented filtering on their own which doesn't
make much sense. Now one can set filter keywords and a filter type for
all ResourceModels. Subclasses simply have to call
ResourceModel::itemMatchesFilter( ResourceItem ) in order to determine
whether an item should be hidden or not. Additionally they have to
implement the updateFilters() method in order to update their internal
management data each time the filters change.
Place functionality to where it belongs. ResourceItem::matchKeywords()
now returns whether a given list of strings matches with various
string properties of the item.
The new generic ItemRelation template class replaces ResourceTreeItem's,
resulting in cleaner and better organized code.
In the future other kind of items can be linked hierarchically using
the ItemRelation template.
The hidden flag has been moved from ResourceTreeItem to ResourceItem
and has been made multi-model capable, i.e. a ResourceModel pointer is
being used for looking up the flag in a hash table.
Dropped separate ResourceItem type "TypeSoundFont" as theres no benefit
from distinguishing it from other plugin-specific files. Soundfonts now
are treated as TypePluginSpecificResource.
Furthermore some minor coding style cleanups.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Always return name extension in lower case so we can easily match it
somewhere else or use it as key for hash tables.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Dynamically extend the map of file types by plugin-processed file types.
Furthermore renamed type TypePluginSpecificPreset to
TypePluginSpecificResource.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added new method ResourceItem::nameExtension() which returns the
extension of the name of an item (e.g. a filename extension such as
"wav" or similiar).
Added new type ResourceItemList, a QList of ResourceItem pointers.
Furthermore some coding style improvements.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added initial support for dragging ResourceItems. This is achieved by
using drag'n'drop support offered by Qt's model/view technology.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added new property "author" for retaining authorship information of
files. Furthermore this allows filtering for authors in ResourceBrowser.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Naming classes like ResourcesItem or ResourcesDatabase is bad style,
therefore rename all classes and files to be Resource*.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>