Commit Graph

807 Commits

Author SHA1 Message Date
Tobias Doerffel
2ef5dffec0 RemotePlugin: refactored system feature configuration
Variuos features (native/Qt semaphores/shared memory) are now
configured by macros like USE_QT_SHMEM and USE_QT_SEMAPHORES. This
allows central and individual configuration of features according to
the platform to build for at the beginning of the file.

Finally makes RemotePlugin work on OS X by not using native semaphores
rather than QSystemSemaphore's.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-07 01:46:14 +02:00
Tobias Doerffel
913aa5a6e8 Track.h: removed unused class declaration "bbTrack"
The class forward declaration for "bbTrack" is neither used nor
required, therefore remove it.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-07 01:32:20 +02:00
Tobias Doerffel
cca39513d0 RemoteVstPlugin: coding style fixes
Renamed class remoteVstPlugin to RemoteVstPlugin + other minor coding
style fixes.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-06 12:37:04 +02:00
Tobias Doerffel
e3fa8762ef Mixer: selectively remove PlayHandles in removePlayHandles()
This commit allows finer control of which kind of PlayHandles get
removed in Mixer::removePlayHandles().

This is now used by InstrumentTrack which only removes NotePlayHandles
in InstrumentTrack::silenceAllNotes(). Fixes broken preview of resources
loaded by IPH-based instruments.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-05 16:38:58 +02:00
Tobias Doerffel
372ff79f96 Dropped ResourceItem type "TypeSoundFont"
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>
2009-07-05 16:05:38 +02:00
Tobias Doerffel
09ff1bb9ed ResourceItem: always return name extension in lower case
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>
2009-07-05 15:58:23 +02:00
Tobias Doerffel
f943df139e InstrumentView: added generic DnD support, renamed/splitted files
Added generic drag'n'drop support for all instrument views. All
resources supported by the according instrument now can be dropped
onto instrument view without any extra code in actual instrument.

Additionally renamed some files and classes related to InstrumentView
class to match new style.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-30 01:19:48 +02:00
Tobias Doerffel
65668f9489 ResourceBrowser: added management-buttons
Added two new buttons "Manage locations" and "Show piano". The first
one will open a resource location management dialog while the latter
one toggles visibility of the preview piano below.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-30 00:25:50 +02:00
Tobias Doerffel
ac4ef21ab7 ConfigManager/SetupDialog: preparations for resource framework migration
Some initial work on saving hash of default soundfont rather than a
filename. Doesn't work yet but will be improved with rewritten setup
dialog.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 23:24:10 +02:00
Tobias Doerffel
77a7db5d2e ResourceItem: dynamically register plugin-processed file types
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>
2009-06-29 14:43:08 +02:00
Tobias Doerffel
81721b6524 PresetPreviewPlayHandle: removed
Removed unused class PresetPreviewPlayHandle with all its sub- and
helper-classes. Lots of dirty code this way gets cleaned up/removed.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 13:16:11 +02:00
Tobias Doerffel
3c5c5f9cb3 FileBrowser: remove from LMMS
Remove deprecated FileBrowser from LMMS as everything is now managed by
ResourceBrowser. This will allow further removal of deprecated
technologies.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:58:10 +02:00
Tobias Doerffel
7821dd210e ResourceAction: new class for centralized functionality
Added new class ResourceAction which centralizes functionality of all
actions related to ResourceItems. This includes loading projects,
samples, presets, plugin-specific presets etc.

Using this new class we can avoid duplicate functionality in
ResourcePreviewer, ResourceBrowser, TrackContainerView, InstrumentTrack
etc.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:48:45 +02:00
Tobias Doerffel
d3cf731dc9 Plugin: initial integration of resource framework
Replaced deprecated Plugin::loadFile(QString) method by
Plugin::loadResource(ResourceItem), a future interface to be adapted
by invididual plugins.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:41:53 +02:00
Tobias Doerffel
3ca017e8fb ResourceItem: new method nameExtension(), new type ResourceItemList
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>
2009-06-29 12:39:00 +02:00
Tobias Doerffel
fb5c974365 ResourceDB: new method matchItems(), renamed ItemList to ItemHashMap
Added new method ResourceDB::matchItems() which returns a list of item
which somehow match the given list of keywords.

Furthermore renamed ItemList to ItemHashMap to better reflect actual
container type.

Additionally some coding style improvements.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-29 12:38:19 +02:00
Tobias Doerffel
891b46fd65 ResourceItem: added copy constructor
Added copy constructor for ResourceItem class so one can easily
duplicate a ResourceItem.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 16:38:04 +02:00
Tobias Doerffel
30543d708c ResourceDB: added itemByHash() method
Added itemByHash() method to ResourceDB class allowing safe access to
an item identified with an according hash. If there's no item associated
with the hash, NULL is being returned.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 01:00:33 +02:00
Tobias Doerffel
75a45cca5f ResourceBrowser: stop preview when drag operation starts
Make sure preview is stopped as soon as a drag operation starts. This
is done by overloading QAbstractItemView::startDrag() and emit a signal
from there which is connected to an according slot in ResourceBrowser.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-23 00:13:40 +02:00
Tobias Doerffel
dc90c899aa ResourcesTreeModel: support for dragging ResourceItems
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>
2009-06-22 23:45:26 +02:00
Tobias Doerffel
0c73c5bb17 StringPairDrag: added static createMimeData() method
Added createMimeData() method to StringPairDrag which creates a proper
QMimeData object for StringPairDrag. External code can use it to create
a QMimeData object which can be received by users of StringPairDrag.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-22 23:42:15 +02:00
Tobias Doerffel
c48883d41a ResourceFileMapper: flush write buffer after writing
Call QFile::flush() after writing the data that was fetched from the
item. This fixes files being empty in some situations.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-19 11:10:38 +02:00
Tobias Doerffel
4bc010cea9 ResourceItem: added property "author"
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>
2009-06-19 10:12:33 +02:00
Tobias Doerffel
9ca93040de PianoRoll: fixed crash with detune tool
When clicking at an invalid position with the detune tool, LMMS could
crash as an invalid iterator was referenced (closes #2808589).

Furthermore renamed PianoRoll::ModeOpen to PianoRoll::ModeEditDetuning.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:28:30 +02:00
Tobias Doerffel
e12476f79c Renamed type noteVector to NoteVector
Renamed type noteVector to NoteVector as well as ::iterator to
::Iterator and ::const_iterator to ::ConstIterator.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-18 23:24:56 +02:00
Tobias Doerffel
5930b23040 ResourceBrowser: trigger default action on double click
Connect to QTreeView::doubleClicked() signal in order to trigger a
default action. For example projects now can be loaded via simple
double click.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-17 10:27:37 +02:00
Tobias Doerffel
2cc49b8010 PlayHandle: use QList instead of QVector for PlayHandle array
Use QList instead of QVector when using a set of PlayHandle's. QList
has faster insert/remove operations and in most cases we iterate through
the array using iterators so there's no performance drop.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 15:04:55 +02:00
Tobias Doerffel
08ea133aa2 NotePlayHandle: cleanups, header dependency reductions etc.
* do not include instrument_track.h in note_play_handle.h by making
  two functions non-inline
* renamed notePlayHandleVector / constNotePlayHandleVector to
  NotePlayHandleList / ConstNotePlayHandleList and changed typedef
  to QList (which has faster insert- and remove-operations).
* removed unused method willFinishThisPeriod()

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-15 14:41:55 +02:00
Tobias Doerffel
9804cb7db8 ResourcePreviewer: save and restore default settings of InstrumentTrack
After instantiation of InstrumentTrack save its settings so we can
restore it each time before previewing resources. Otherwise preview
of incomplete presets or just samples could be distorted by settings
of previosly loaded preset.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 15:17:25 +02:00
Tobias Doerffel
22716bccf1 ResourceBrowser: added a PianoView widget
Added a PianoView widget to ResourceBrowser so one can easily preview selected
preset, sample etc.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 15:15:43 +02:00
Tobias Doerffel
d866015dc9 PianoView: use layout for flexible widget size
Use a vertical box layout for PianoView and and track resize events
in order to keep scrollbar range up to date. This way PianoView's size
is not fixed anymore and the PianoView widget can be placed inside
other layouts without any restrictions.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 14:39:25 +02:00
Tobias Doerffel
01a83deee7 InstrumentTrack: renamed getPiano() to pianoModel()
Renamed getPiano() to pianoModel() to better express what this
function does.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 13:58:45 +02:00
Tobias Doerffel
b8abfd24b6 ResourceFileMapper: new class for local access to resources
Added ResourceFileMapper which is an inline class allowing to access
all kind of ResourceItems locally by creating a QTemporaryFile object
and fetch data where neccessary (i.e. ResourceItem::isLocalResource()
returns false).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 12:20:25 +02:00
Tobias Doerffel
7d0facf78d ResourceBrowser: preview resource while holding down mouse button
Use our ResourcePreviewer object to actually playback preview sounds
while holding down mouse button.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 00:32:58 +02:00
Tobias Doerffel
d11bf48891 ResourcePreviewer: start/stop playback of preview sound
Make the internal InstrumentTrack play the default key in preview()
and stop playback in new method stopPreview().

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-11 00:30:39 +02:00
Tobias Doerffel
3c9859da9f InstrumentTrack: new method silenceAllNotes()
Added new method silenceAllNotes() which is a replacement for
invalidateAllMyNPH() and also resets m_runningMidiNotes array.

silenceAllNotes() is now used in destructor as well.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-10 23:49:06 +02:00
Tobias Doerffel
a1c4992a89 ResourcePreviewer: disable journalling when previewing
Globally disable journalling when previewing a ResourceItem (i.e. load
a preset, sample etc.).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-10 23:49:06 +02:00
Tobias Doerffel
6fabe26620 ResourceItem: added TypePluginSpecificPreset
Added another type TypePluginSpecificPreset in Types enumeration. This
allows handling for example XIZ files (ZynAddSubFX presets) properly.
2009-06-07 16:28:54 +02:00
Tobias Doerffel
264b50fcc6 ResourcePreviewer: initial version
Added initial version of ResourcePreviewer, a replacement for the old
PresetPreviewPlayHandle technology. It can take any ResourceItem and
preview it depending on its type.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 01:15:11 +02:00
Tobias Doerffel
a6090ebe23 InstrumentTrack: presetPreviewPlayHandle no longer a friend class
For a long time presetPreviewPlayHandle has been a friend class of
InstrumentTrack as it had to modify MidiPort settings. However the
InstrumentTrack's MidiPort is now accessible via getMidiPort() so
there's no need for keeping presetPreviewPlayHandle a friend class
anymore.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 01:09:07 +02:00
Tobias Doerffel
5a00ebd360 MultimediaProject: splitted constructor for loading either file or data
The old constructor treated the string argument either as filename or
as raw XML data, depending on 2nd parameter. This is a mess and quickly
leads to confusion.

Now we have two constructors taking either a filename as string or a
QByteArray with XML data. Loading actual data has been separated into
MultimediaProject::loadData( const QByteArray & ).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-05 00:55:25 +02:00
Tobias Doerffel
eb77b99220 Completed commit ea2b165cbd
Commit ea2b165cbd was incomplete.
Fixed some #include statements. All compile errors should be gone now.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 23:41:09 +02:00
Tobias Doerffel
ea2b165cbd Renamed Resources* classes to Resource* and renamed files
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>
2009-06-04 22:53:05 +02:00
Tobias Doerffel
14fef9152c ResourcesBrowser: improved item filtering
Filter line-edit is now placed above actual tree view and has been
decorated with a small icon as well as a status label, displaying the
number of filtered and total number of items.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 11:58:48 +02:00
Tobias Doerffel
74a4635ed3 SideBarWidget: new addContentLayout() method
Added addContentLayout(QLayout *) method to SideBarWidget in order to
allow subclasses to add whole layouts as well.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 11:50:08 +02:00
Tobias Doerffel
359b73c2a3 ResourcesBrowser: implemented item-sensitive context menu
Implemented context menu for ResourcesBrowser with various actions
inside depending on selected item.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-04 00:29:56 +02:00
Tobias Doerffel
c5bf76b98c ResourcesTreeModel: encapsulate conversion from index to items
Encapsulate conversion from a QModelIndex to a ResourcesTreeItem
or a ResourcesItem into static methods.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 15:32:45 +02:00
Tobias Doerffel
39b489d522 ResourcesItem: added isLocalResource() method
Added isLocalResource() method which returns whether it belongs to a
local ResourcesProvider or not.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 15:01:59 +02:00
Tobias Doerffel
3eb96c418e ResourcesProvider: added isLocal() method
Added isLocal() method for returning whether according provider class
provides local resources or not (will allow a download option for
non-local resources later).

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 15:00:26 +02:00
Tobias Doerffel
f6fe2a16ad ResourcesBrowser: new class providing a view for browsing resources
Added a new class ResourcesBrowser which represents a complete view
for browsing all available resources. It only allows filtering at the
moment but more features will follow soon.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-06-03 14:36:28 +02:00