From aae8583f72a5ae94451426d0888fda79c40906df Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 31 May 2015 20:21:58 +1000
Subject: Add Haiku support


diff --git a/src/gui/Main.cpp b/src/gui/Main.cpp
index 546433b..287c630 100644
--- a/src/gui/Main.cpp
+++ b/src/gui/Main.cpp
@@ -398,7 +398,10 @@ static void signal_handler( int s )
 
 int main( int argc, char *argv[] )
 {
-#ifndef Q_OS_WIN
+#ifdef Q_OS_HAIKU
+	setenv("HOME", "/boot/home", 1);
+#endif
+#if !defined(Q_OS_WIN) && !defined(Q_OS_HAIKU)
 	const QString unixPath = "/../share/qmplay2";
 #else
 	const QString unixPath;
diff --git a/src/gui/MainWidget.cpp b/src/gui/MainWidget.cpp
index 41d9bb5..506f05d 100644
--- a/src/gui/MainWidget.cpp
+++ b/src/gui/MainWidget.cpp
@@ -64,7 +64,11 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments )
 		connect( QMPlay2GUI.pipe, SIGNAL( newConnection() ), this, SLOT( newConnection() ) );
 
 	SettingsWidget::InitSettings();
+#ifdef Q_OS_HAIKU
+	QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", true );
+#else	
 	QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", false );
+#endif	
 
 	QMPlay2GUI.menubar = new MenuBar;
 
diff --git a/src/gui/PlayClass.cpp b/src/gui/PlayClass.cpp
index 8e43aba..2ba9b32 100644
--- a/src/gui/PlayClass.cpp
+++ b/src/gui/PlayClass.cpp
@@ -15,9 +15,11 @@
 #include <Decoder.hpp>
 #include <Reader.hpp>
 
+#ifndef Q_OS_HAIKU
 #if QT_VERSION >= 0x040800
 	#define USE_QRAWFONT
 #endif
+#endif
 
 #include <QCoreApplication>
 #ifdef USE_QRAWFONT
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index fd07c30..30464ee 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -4,15 +4,19 @@ CONFIG -= app_bundle
 
 QT += network
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-else:unix:!macx: PKGCONFIG += x11
+else:unix:!macx:!haiku: PKGCONFIG += x11
 
 TARGET = QMPlay2
 
 win32: DESTDIR = ../../app
+haiku: DESTDIR = ../../app
 else: DESTDIR = ../../app/bin
 
 win32: QMAKE_LIBDIR += ../../app
-else {
+haiku {
+	QMAKE_LIBDIR += ../../app/lib
+	LIBS += -lfontconfig -lfreetype -lfribidi
+} else {
 	QMAKE_LIBDIR += ../../app/lib
 	LIBS += -lrt
 }
diff --git a/src/modules/AudioFilters/AudioFilters.pro b/src/modules/AudioFilters/AudioFilters.pro
index 75ed07c..01d083c 100644
--- a/src/modules/AudioFilters/AudioFilters.pro
+++ b/src/modules/AudioFilters/AudioFilters.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/FFMpeg/FFMpeg.pro b/src/modules/FFMpeg/FFMpeg.pro
index b2ea141..75fe3d7 100644
--- a/src/modules/FFMpeg/FFMpeg.pro
+++ b/src/modules/FFMpeg/FFMpeg.pro
@@ -5,13 +5,20 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 QT += network
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
 else: QMAKE_LIBDIR += ../../../app/lib
 LIBS += -lqmplay2
 win32: LIBS += -lws2_32 -lavformat -lavcodec -lswscale -lavutil
-else {
+haiku {
+	LIBS += /boot/system/develop/lib/x86/libavformat.a
+	LIBS += /boot/system/develop/lib/x86/libavcodec.a
+	LIBS += /boot/system/develop/lib/x86/libswscale.a
+	LIBS += /boot/system/develop/lib/x86/libavutil.a
+	LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx
+} else {
 	CONFIG += link_pkgconfig
 	PKGCONFIG += libavformat libavcodec libswscale libavutil
 }
@@ -30,7 +37,7 @@ DEPENDPATH += . ../../qmplay2/headers
 HEADERS += FFMpeg.hpp FFDemux.hpp FFDec.hpp FFDecSW.hpp FFReader.hpp FFCommon.hpp
 SOURCES += FFMpeg.cpp FFDemux.cpp FFDec.cpp FFDecSW.cpp FFReader.cpp FFCommon.cpp
 
-unix:!macx {
+unix:!macx:!haiku {
 #Common HWAccel
 	HEADERS   += FFDecHWAccel.hpp HWAccelHelper.hpp
 	SOURCES   += FFDecHWAccel.cpp HWAccelHelper.cpp
diff --git a/src/modules/Inputs/Inputs.pro b/src/modules/Inputs/Inputs.pro
index c021921..fc7b0c8 100644
--- a/src/modules/Inputs/Inputs.pro
+++ b/src/modules/Inputs/Inputs.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/MediaKit/MediaKit.cpp b/src/modules/MediaKit/MediaKit.cpp
new file mode 100644
index 0000000..1647325
--- /dev/null
+++ b/src/modules/MediaKit/MediaKit.cpp
@@ -0,0 +1,65 @@
+#include <MediaKit.hpp>
+#include <MediaKitWriter.hpp>
+
+MediaKit::MediaKit() :
+	Module( "MediaKit" )
+{
+	moduleImg = QImage( ":/MediaKit" );
+
+	init( "WriterEnabled", true );
+	init( "Delay", 0.2 );
+}
+
+QList< MediaKit::Info > MediaKit::getModulesInfo( const bool showDisabled ) const
+{
+	QList< Info > modulesInfo;
+	if ( showDisabled || getBool( "WriterEnabled" ) )
+		modulesInfo += Info( MediaKitWriterName, WRITER, QStringList( "audio" ) );
+	return modulesInfo;
+}
+void *MediaKit::createInstance( const QString &name )
+{
+	if ( name == MediaKitWriterName && getBool( "WriterEnabled" ) )
+		return new MediaKitWriter( *this );
+	return NULL;
+}
+
+MediaKit::SettingsWidget *MediaKit::getSettingsWidget()
+{
+	return new ModuleSettingsWidget( *this );
+}
+
+QMPLAY2_EXPORT_PLUGIN( MediaKit )
+
+/**/
+
+#include <QDoubleSpinBox>
+#include <QGridLayout>
+#include <QCheckBox>
+#include <QLabel>
+
+ModuleSettingsWidget::ModuleSettingsWidget( Module &module ) :
+	Module::SettingsWidget( module )
+{
+	enabledB = new QCheckBox( tr( "Włączony" ) );
+	enabledB->setChecked( sets().getBool( "WriterEnabled" ) );
+
+	QLabel *delayL = new QLabel( tr( "Opóźnienie" ) + ": " );
+
+	delayB = new QDoubleSpinBox;
+	delayB->setRange( 0.01, 1.0 );
+	delayB->setSingleStep( 0.01 );
+	delayB->setSuffix( " " + tr( "sek" ) );
+	delayB->setValue( sets().getDouble( "Delay" ) );
+
+	QGridLayout *layout = new QGridLayout( this );
+	layout->addWidget( enabledB, 0, 0, 1, 2 );
+	layout->addWidget( delayL, 1, 0, 1, 1 );
+	layout->addWidget( delayB, 1, 1, 1, 1 );
+}
+
+void ModuleSettingsWidget::saveSettings()
+{
+	sets().set( "WriterEnabled", enabledB->isChecked() );
+	sets().set( "Delay", delayB->value() );
+}
diff --git a/src/modules/MediaKit/MediaKit.hpp b/src/modules/MediaKit/MediaKit.hpp
new file mode 100644
index 0000000..16920f6
--- /dev/null
+++ b/src/modules/MediaKit/MediaKit.hpp
@@ -0,0 +1,31 @@
+#include <Module.hpp>
+
+class MediaKit : public Module
+{
+public:
+	MediaKit();
+private:
+	QList< Info > getModulesInfo( const bool ) const;
+	void *createInstance( const QString & );
+
+	SettingsWidget *getSettingsWidget();
+};
+
+/**/
+
+#include <QCoreApplication>
+
+class QDoubleSpinBox;
+class QCheckBox;
+
+class ModuleSettingsWidget : public Module::SettingsWidget
+{
+	Q_DECLARE_TR_FUNCTIONS( ModuleSettingsWidget )
+public:
+	ModuleSettingsWidget( Module & );
+private:
+	void saveSettings();
+
+	QCheckBox *enabledB;
+	QDoubleSpinBox *delayB;
+};
diff --git a/src/modules/MediaKit/MediaKit.png b/src/modules/MediaKit/MediaKit.png
new file mode 100644
index 0000000000000000000000000000000000000000..36cb89c5e5200c5b613e4cf005b772df61aef49c
GIT binary patch
literal 5396
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

literal 0
HcmV?d00001

diff --git a/src/modules/MediaKit/MediaKit.pro b/src/modules/MediaKit/MediaKit.pro
new file mode 100644
index 0000000..96de9dd
--- /dev/null
+++ b/src/modules/MediaKit/MediaKit.pro
@@ -0,0 +1,21 @@
+TEMPLATE = lib
+CONFIG += plugin
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+DESTDIR = ../../../app/modules
+
+QMAKE_LIBDIR += ../../../app/lib
+LIBS += -lqmplay2 -lmedia -lbe
+
+RCC_DIR = build/rcc
+OBJECTS_DIR = build/obj
+MOC_DIR = build/moc
+
+RESOURCES += icon.qrc
+
+INCLUDEPATH += . ../../qmplay2/headers
+DEPENDPATH += . ../../qmplay2/headers
+
+HEADERS += MediaKit.hpp MediaKitoWriter.hpp SndPlayer.hpp RingBuffer.hpp
+SOURCES += MediaKit.cpp MediaKitWriter.cpp SndPlayer.cpp RingBuffer.cpp
diff --git a/src/modules/MediaKit/MediaKitWriter.cpp b/src/modules/MediaKit/MediaKitWriter.cpp
new file mode 100644
index 0000000..f8fad50
--- /dev/null
+++ b/src/modules/MediaKit/MediaKitWriter.cpp
@@ -0,0 +1,85 @@
+#include <MediaKitWriter.hpp>
+#include <QMPlay2Core.hpp>
+
+MediaKitWriter::MediaKitWriter( Module &module ) :
+	err( false )
+{
+	addParam( "delay" );
+	addParam( "chn" );
+	addParam( "rate" );
+
+	SetModule( module );
+}
+
+bool MediaKitWriter::set()
+{
+	if ( player.delay != sets().getDouble( "Delay" ) )
+	{
+		player.delay = sets().getDouble( "Delay" );
+		return false;
+	}
+	return sets().getBool( "WriterEnabled" );
+}
+
+bool MediaKitWriter::readyWrite() const
+{
+	return !err && player.isOpen();
+}
+
+bool MediaKitWriter::processParams( bool * )
+{
+	bool resetAudio = false;
+
+	uchar chn = getParam( "chn" ).toUInt();
+	if ( player.channels != chn )
+	{
+		resetAudio = true;
+		player.channels = chn;
+	}
+	uint rate = getParam( "rate" ).toUInt();
+	if ( player.sample_rate != rate )
+	{
+		resetAudio = true;
+		player.sample_rate = rate;
+	}
+
+	if ( resetAudio || err )
+	{
+		player.stop();
+		err = !player.start();
+		if ( !err )
+			modParam( "delay", player.delay );
+		else
+			QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Nie można otworzyć strumienia wyjścia dźwięku" ) );
+	}
+
+	return readyWrite();
+}
+qint64 MediaKitWriter::write( const QByteArray &arr )
+{
+	if ( !arr.size() || !readyWrite() )
+		return 0;
+
+	err = !player.write( arr );
+	if ( err )
+	{
+		QMPlay2Core.logError( "MediaKitWriter :: " + tr ( "Błąd podczas odtwarzania" ) );
+		return 0;
+	}
+
+	return arr.size();
+}
+
+qint64 MediaKitWriter::size() const
+{
+	return -1;
+}
+QString MediaKitWriter::name() const
+{
+	return MediaKitWriterName;
+}
+
+bool MediaKitWriter::open()
+{
+	return player.isOK();
+}
diff --git a/src/modules/MediaKit/MediaKitWriter.hpp b/src/modules/MediaKit/MediaKitWriter.hpp
new file mode 100644
index 0000000..28fa249
--- /dev/null
+++ b/src/modules/MediaKit/MediaKitWriter.hpp
@@ -0,0 +1,30 @@
+#include <Writer.hpp>
+#include <SndPlayer.hpp>
+
+#include <QCoreApplication>
+
+class MediaKitWriter : public Writer
+{
+	Q_DECLARE_TR_FUNCTIONS( MediaKitWriter )
+public:
+	MediaKitWriter( Module & );
+private:
+	bool set();
+
+	bool readyWrite() const;
+
+	bool processParams( bool *paramsCorrected );
+	qint64 write( const QByteArray & );
+
+	qint64 size() const;
+	QString name() const;
+
+	bool open();
+
+	/**/
+
+	SndPlayer player;
+	bool err;
+};
+
+#define MediaKitWriterName "MediaKit Writer"
diff --git a/src/modules/MediaKit/RingBuffer.cpp b/src/modules/MediaKit/RingBuffer.cpp
new file mode 100644
index 0000000..915becc
--- /dev/null
+++ b/src/modules/MediaKit/RingBuffer.cpp
@@ -0,0 +1,129 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "RingBuffer.hpp"
+
+RingBuffer::RingBuffer( int size )
+{
+	 initialized = false;
+     Buffer = new unsigned char[size];
+     if(Buffer!=NULL) {
+     	memset( Buffer, 0, size );
+	    BufferSize = size;     	
+     } else {
+     	BufferSize = 0;
+     }
+     reader = 0;
+     writer = 0;
+     writeBytesAvailable = size;
+     if((locker=create_sem(1,"locker")) >= B_OK) {
+     	initialized = true;
+     } else {
+     	if(Buffer!=NULL) {
+     		delete[] Buffer;     		
+     	}
+     }
+}
+
+RingBuffer::~RingBuffer( )
+{
+	 if(initialized) {
+     	delete[] Buffer;
+     	delete_sem(locker);
+	 }
+}
+
+bool 
+RingBuffer::Empty( void )
+{
+     memset( Buffer, 0, BufferSize );
+     reader = 0;
+     writer = 0;
+     writeBytesAvailable = BufferSize;
+     return true;
+}
+
+int 
+RingBuffer::Read( unsigned char *data, int size )
+{	
+	 acquire_sem(locker);
+	 
+     if( data == 0 || size <= 0 || writeBytesAvailable == BufferSize ) {
+     	 release_sem(locker);
+         return 0;
+     }
+
+     int readBytesAvailable = BufferSize - writeBytesAvailable;
+
+     if( size > readBytesAvailable ) {
+         size = readBytesAvailable;
+     }
+
+     if(size > BufferSize - reader) {
+         int len = BufferSize - reader;
+         memcpy(data, Buffer + reader, len);
+         memcpy(data + len, Buffer, size-len);
+     } else {
+         memcpy(data, Buffer + reader, size);
+     }
+
+     reader = (reader + size) % BufferSize;
+     writeBytesAvailable += size;
+	 
+	 release_sem(locker);
+     return size;
+}
+
+int 
+RingBuffer::Write( unsigned char *data, int size )
+{
+	 acquire_sem(locker);
+	 
+     if( data == 0 || size <= 0 || writeBytesAvailable == 0 ) {
+     	 release_sem(locker);
+         return 0;
+     }
+
+     if( size > writeBytesAvailable ) {
+         size = writeBytesAvailable;
+     }
+
+     if(size > BufferSize - writer) {
+         int len = BufferSize - writer;
+         memcpy(Buffer + writer, data, len);
+         memcpy(Buffer, data+len, size-len);
+     } else {
+         memcpy(Buffer + writer, data, size);
+     }
+
+     writer = (writer + size) % BufferSize;
+     writeBytesAvailable -= size;
+
+	 release_sem(locker);	 
+     return size;
+}
+
+int 
+RingBuffer::GetSize( void )
+{
+     return BufferSize;
+}
+
+int 
+RingBuffer::GetWriteAvailable( void )
+{
+     return writeBytesAvailable;
+}
+
+int 
+RingBuffer::GetReadAvailable( void )
+{
+     return BufferSize - writeBytesAvailable;
+}
+
+status_t 
+RingBuffer::InitCheck( void )
+{
+	return initialized?B_OK:B_ERROR;
+}
diff --git a/src/modules/MediaKit/RingBuffer.hpp b/src/modules/MediaKit/RingBuffer.hpp
new file mode 100644
index 0000000..4715632
--- /dev/null
+++ b/src/modules/MediaKit/RingBuffer.hpp
@@ -0,0 +1,31 @@
+#ifndef __RING_BUFFER_H__
+#define __RING_BUFFER_H__
+
+#include <OS.h>
+
+class RingBuffer {
+
+public:
+     RingBuffer(int size);
+     ~RingBuffer();
+     int Read( unsigned char* dataPtr, int numBytes );
+     int Write( unsigned char *dataPtr, int numBytes );
+     
+     bool Empty( void );
+     int GetSize( );
+     int GetWriteAvailable( );
+     int GetReadAvailable( );
+     status_t InitCheck( );
+private:
+     unsigned char *Buffer;
+     int BufferSize;
+     int reader;
+     int writer;
+     int writeBytesAvailable;
+     
+     sem_id locker;
+     
+     bool 	initialized;
+};
+
+#endif
diff --git a/src/modules/MediaKit/SndPlayer.cpp b/src/modules/MediaKit/SndPlayer.cpp
new file mode 100644
index 0000000..7926fb3
--- /dev/null
+++ b/src/modules/MediaKit/SndPlayer.cpp
@@ -0,0 +1,114 @@
+#include <SndPlayer.hpp>
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <SoundPlayer.h>
+
+
+static void proc(void *cookie, void *buffer, size_t len, const media_raw_audio_format &format)
+{
+	RingBuffer *ring = (RingBuffer*)cookie;
+	unsigned char* ptr = (unsigned char*)buffer;
+	
+	int readed = ring->Read(ptr,len);
+	
+	if(readed <len)
+		memset(ptr+readed, 0, len - readed);
+}
+
+SndPlayer::SndPlayer()
+{	
+	channels = sample_rate = delay = 0;
+	player = NULL;
+	_isOK = true;	
+}
+
+bool SndPlayer::start()
+{
+	int gSoundBufferSize = 8192 * sizeof(float);
+		
+	media_raw_audio_format form = {
+		sample_rate,
+		channels,
+		media_raw_audio_format::B_AUDIO_FLOAT,
+		B_MEDIA_LITTLE_ENDIAN,
+		gSoundBufferSize
+	};
+	
+	ring = new RingBuffer(gSoundBufferSize * 3);
+	if(ring->InitCheck() != B_OK) {
+		delete ring; ring = 0;
+		return false;
+	}
+			
+	player = new BSoundPlayer(&form, "QMPlay2_BSoundPlayer", proc, NULL, (void*)ring);
+	
+	if(player->InitCheck() != B_OK) {
+		delete player;
+		player = NULL;
+		return false;
+	}
+	
+	player->Start();
+	player->SetHasData(true);	
+
+	_isOK = true;
+
+	return player;
+}
+void SndPlayer::stop()
+{
+	if ( player )
+	{
+		if(player) {
+			player->Stop();
+			delete player;
+			delete ring;
+		}
+	
+		player = NULL;
+		ring = NULL;
+	}	
+}
+
+double SndPlayer::getLatency()
+{
+	double lat = player->Latency() / (ring->GetSize()*4.0);	
+
+	return lat;
+}
+
+bool SndPlayer::write( const QByteArray &arr )
+{
+	int s = arr.size();
+	while ( s > 0 && s % 4 )
+		s--;
+	if ( s <= 0 )
+		return false;
+
+	int len=s;
+
+	unsigned char *src_ptr = (unsigned char *)arr.data();
+	
+	float *src = (float*)arr.data();
+	float *dst = (float*)malloc(len*sizeof(float));
+	float *dptr = dst;
+	
+	memcpy(dst,src,len);
+
+	unsigned char *dst_ptr = (unsigned char *)dst;
+	
+	for(;;) {
+			int len2 = ring->Write(dst_ptr,len);
+			if(len2==len)break;
+			len-=len2;
+			dst_ptr+=len2;
+			snooze(10);
+	}
+		
+	if(dst!=NULL)
+		free(dst);
+		
+	return true;
+}
diff --git a/src/modules/MediaKit/SndPlayer.hpp b/src/modules/MediaKit/SndPlayer.hpp
new file mode 100644
index 0000000..b0ca8c2
--- /dev/null
+++ b/src/modules/MediaKit/SndPlayer.hpp
@@ -0,0 +1,49 @@
+#ifndef PULSE_HPP
+#define PULSE_HPP
+
+#include <QByteArray>
+
+#include <SoundPlayer.h>
+
+#include <Window.h>
+#include <View.h>
+#include <TextControl.h>
+
+#include "RingBuffer.hpp"
+
+class SndPlayer
+{
+public:
+	SndPlayer();
+	inline ~SndPlayer()
+	{
+		stop();
+	}
+
+	inline bool isOK() const
+	{
+		return _isOK;
+	}
+	inline bool isOpen() const
+	{
+		return player;
+	}
+
+	bool start();
+	void stop();
+
+	double getLatency();
+
+	bool write( const QByteArray & );
+
+	double delay;
+	uchar channels;
+	uint sample_rate;
+		
+private:
+	bool _isOK;
+	BSoundPlayer *player;
+	RingBuffer *ring;
+};
+
+#endif
diff --git a/src/modules/MediaKit/icon.qrc b/src/modules/MediaKit/icon.qrc
new file mode 100644
index 0000000..24b4ebd
--- /dev/null
+++ b/src/modules/MediaKit/icon.qrc
@@ -0,0 +1,3 @@
+<RCC><qresource>
+	<file alias="MediaKit">MediaKit.png</file>
+</qresource></RCC>
diff --git a/src/modules/Modplug/Modplug.pro b/src/modules/Modplug/Modplug.pro
index ac024e0..0236514 100644
--- a/src/modules/Modplug/Modplug.pro
+++ b/src/modules/Modplug/Modplug.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/Playlists/Playlists.pro b/src/modules/Playlists/Playlists.pro
index 7518cc2..16bf849 100644
--- a/src/modules/Playlists/Playlists.pro
+++ b/src/modules/Playlists/Playlists.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/QPainter/QPainter.pro b/src/modules/QPainter/QPainter.pro
index b499b8b..b1c0790 100644
--- a/src/modules/QPainter/QPainter.pro
+++ b/src/modules/QPainter/QPainter.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/QPainter/QPainterWriter.cpp b/src/modules/QPainter/QPainterWriter.cpp
index 915f6f1..ddc070f 100644
--- a/src/modules/QPainter/QPainterWriter.cpp
+++ b/src/modules/QPainter/QPainterWriter.cpp
@@ -15,7 +15,11 @@ Drawable::Drawable( QPainterWriter &writer ) :
 {
 	setAutoFillBackground( true );
 	setMouseTracking( true );
+#ifdef Q_OS_HAIKU
+	setPalette( Qt::black );
+#endif
 }
+
 Drawable::~Drawable()
 {
 	clr();
diff --git a/src/modules/Subtitles/Subtitles.pro b/src/modules/Subtitles/Subtitles.pro
index 49ac705..8ee5d43 100644
--- a/src/modules/Subtitles/Subtitles.pro
+++ b/src/modules/Subtitles/Subtitles.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/VideoFilters/VideoFilters.pro b/src/modules/VideoFilters/VideoFilters.pro
index 4996c37..8242a9c 100644
--- a/src/modules/VideoFilters/VideoFilters.pro
+++ b/src/modules/VideoFilters/VideoFilters.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/Visualizations/Visualizations.pro b/src/modules/Visualizations/Visualizations.pro
index 8faac93..7d3b946 100644
--- a/src/modules/Visualizations/Visualizations.pro
+++ b/src/modules/Visualizations/Visualizations.pro
@@ -4,6 +4,7 @@ CONFIG += plugin
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
diff --git a/src/modules/modules.pro b/src/modules/modules.pro
index 4851ba2..802281c 100644
--- a/src/modules/modules.pro
+++ b/src/modules/modules.pro
@@ -1,8 +1,10 @@
 TEMPLATE = subdirs
-SUBDIRS = FFMpeg Inputs Modplug Playlists Subtitles QPainter Extensions Visualizations AudioFilters VideoFilters OpenGL
+SUBDIRS = FFMpeg Inputs Modplug Playlists Subtitles QPainter Extensions Visualizations AudioFilters VideoFilters
+!haiku: SUBDIRS += OpenGL
 linux*: SUBDIRS += ALSA
+haiku: SUBDIRS += MediaKit
 else: SUBDIRS += PortAudio
-unix:!macx {
+unix:!macx:!haiku {
 	!greaterThan(QT_MAJOR_VERSION, 4)|qtHaveModule(x11extras): SUBDIRS += XVideo
 	packagesExist(libpulse-simple):	SUBDIRS += PulseAudio
 }
diff --git a/src/qmplay2/qmplay2.pro b/src/qmplay2/qmplay2.pro
index bc0ac7c..a7cc9d2 100644
--- a/src/qmplay2/qmplay2.pro
+++ b/src/qmplay2/qmplay2.pro
@@ -8,7 +8,9 @@ win32: DESTDIR = ../../app
 else: DESTDIR = ../../app/lib
 
 win32: LIBS += -lswscale -lswresample -lavutil -Wl,-Bstatic -lass -lfontconfig -lexpat -lfreetype -lfribidi -Wl,-Bdynamic -lwinmm -lshell32
-else {
+haiku {
+	LIBS += /boot/system/develop/lib/x86/libswscale.a /boot/system/develop/lib/x86/libswresample.a /boot/system/develop/lib/x86/libavutil.a -lass
+} else {
 	CONFIG += link_pkgconfig
 	PKGCONFIG += libswscale libswresample libavutil libass
 }
-- 
2.2.2


From 9806e524e5618a6d07286fdf991321a7690d6bd1 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 31 May 2015 20:42:24 +1000
Subject: Fix Extensions module path


diff --git a/src/modules/Extensions/Extensions.pro b/src/modules/Extensions/Extensions.pro
index fba08a3..33457bd 100644
--- a/src/modules/Extensions/Extensions.pro
+++ b/src/modules/Extensions/Extensions.pro
@@ -5,6 +5,7 @@ QT += network
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
 win32: DESTDIR = ../../../app/modules
+haiku: DESTDIR = ../../../app/modules
 else: DESTDIR = ../../../app/share/qmplay2/modules
 
 win32: QMAKE_LIBDIR += ../../../app
-- 
2.2.2


From 4292d4c538bbc94436a36dc031e3fb379e9ac219 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 31 May 2015 21:26:57 +1000
Subject: Add haiku resources


diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef
new file mode 100644
index 0000000..c23d039
--- /dev/null
+++ b/haiku/QMPlay2.rdef
@@ -0,0 +1,42 @@
+resource app_signature "application/x-vnd.QMPlay2";
+resource app_flags B_SINGLE_LAUNCH;
+resource app_version {
+	major  = 15,
+	middle = 05,
+	minor  = 30,
+
+	/* Application "variety" can be set to one of the following:
+	*	B_APPV_DEVELOPMENT,
+	*	B_APPV_ALPHA,
+	*	B_APPV_BETA,
+	*	B_APPV_GAMMA,
+	*	B_APPV_GOLDEN_MASTER,
+	*	B_APPV_FINAL
+	*/
+	variety = B_APPV_DEVELOPMENT,
+	internal = 0,
+
+	short_info = "QMPlay2",
+	long_info = "QMPlay2 © 2010-2015 Błażej Szczygieł"
+};
+
+resource file_types message {
+	"types" = "video",
+	"types" = "audio"
+};
+
+resource vector_icon array {
+	$"6E63696602012C165AF20314D77803000DB4D0B47BB4D0B47BB5A4B493B717B5"
+	$"6DB659B515BCBFB846C814BDF0C26CBB17C8CEBE53CA3FBF23C99BBE9CCA9ABF"
+	$"6BCA35C053CA92C00FC985C0E0C7E7C196C8ADC12DC276C452B78EC9BFBD01C7"
+	$"06B6C1CA20B523CAD9B601CAA4B4ACCAF9B426CA1EB421CA9DB41FC965B46DC7"
+	$"FBB44EC8B0B561C2E0B4A9B879B57FBD9BB485B770B428B55FB438B66BB41CB4"
+	$"F6B4D0B47BB466B48CB4D0B47B0209B627B6EDB6A3B714B640B838B6A7BACAB6"
+	$"89B97FB6F3BD1FB6E1C1D3B6F0BF7BB6D1C408B623C864B659C633B71AC816B8"
+	$"DBC716B7F4C787BC65C561C369C1D7BFF0C3ADC4D7C11DC7BDBFBFC64EC075C7"
+	$"1DBF3FC5A7BE96C65EBEEFC0EEBC47B790B783BC40B9E3B71CB7480209B627B6"
+	$"EDB640B838B6A3B714B790B783B71CB748BC40B9E3C5A7BE96C0EEBC47C65EBE"
+	$"EFC7BDBFBFC71DBF3FC64EC075C369C1D7C4D7C11DBFF0C3ADB8DBC716BC65C5"
+	$"61B7F4C787B623C864B71AC816B659C633B6E1C1D3B6D1C408B6F0BF7BB6A7BA"
+	$"CAB6F3BD1FB689B97F020A00020001000A01010200"
+};
-- 
2.2.2


From a9ecc01978f198ad496868ab283f9a97f9bba986 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 1 Jun 2015 20:19:40 +1000
Subject: Optimize mediakit writer


diff --git a/src/modules/MediaKit/SndPlayer.cpp b/src/modules/MediaKit/SndPlayer.cpp
index 7926fb3..ca7ad89 100644
--- a/src/modules/MediaKit/SndPlayer.cpp
+++ b/src/modules/MediaKit/SndPlayer.cpp
@@ -91,24 +91,13 @@ bool SndPlayer::write( const QByteArray &arr )
 
 	unsigned char *src_ptr = (unsigned char *)arr.data();
 	
-	float *src = (float*)arr.data();
-	float *dst = (float*)malloc(len*sizeof(float));
-	float *dptr = dst;
-	
-	memcpy(dst,src,len);
-
-	unsigned char *dst_ptr = (unsigned char *)dst;
-	
 	for(;;) {
-			int len2 = ring->Write(dst_ptr,len);
-			if(len2==len)break;
-			len-=len2;
-			dst_ptr+=len2;
-			snooze(10);
+			int len2 = ring->Write(src_ptr,len);
+			if(len2 == len)break;
+			len -= len2;
+			src_ptr += len2;
+			snooze(100);
 	}
 		
-	if(dst!=NULL)
-		free(dst);
-		
 	return true;
 }
-- 
2.2.2


From 6a88fc2723e21f6dce0f20637f29e776fff1696a Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 1 Jun 2015 20:24:04 +1000
Subject: Fix flags


diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef
index c23d039..897f42c 100644
--- a/haiku/QMPlay2.rdef
+++ b/haiku/QMPlay2.rdef
@@ -1,5 +1,5 @@
 resource app_signature "application/x-vnd.QMPlay2";
-resource app_flags B_SINGLE_LAUNCH;
+resource app_flags B_MULTIPLE_LAUNCH | B_ARGV_ONLY;
 resource app_version {
 	major  = 15,
 	middle = 05,
-- 
2.2.2


From 78d5b833eda42e452d9c7aec5735ef7ddbaab053 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 1 Jun 2015 20:33:23 +1000
Subject: Fix flags again


diff --git a/haiku/QMPlay2.rdef b/haiku/QMPlay2.rdef
index 897f42c..f41469d 100644
--- a/haiku/QMPlay2.rdef
+++ b/haiku/QMPlay2.rdef
@@ -1,5 +1,5 @@
 resource app_signature "application/x-vnd.QMPlay2";
-resource app_flags B_MULTIPLE_LAUNCH | B_ARGV_ONLY;
+resource app_flags B_MULTIPLE_LAUNCH;
 resource app_version {
 	major  = 15,
 	middle = 05,
-- 
2.2.2


From 34ed2a733d44e8e18d05d553a814a3d393a451cf Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 1 Jun 2015 22:58:04 +1000
Subject: Change default settings for haiku


diff --git a/src/gui/MainWidget.cpp b/src/gui/MainWidget.cpp
index 506f05d..71aad7f 100644
--- a/src/gui/MainWidget.cpp
+++ b/src/gui/MainWidget.cpp
@@ -66,7 +66,7 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments )
 	SettingsWidget::InitSettings();
 #ifdef Q_OS_HAIKU
 	QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", true );
-#else	
+#else
 	QMPlay2Core.getSettings().init( "MainWidget/WidgetsLocked", false );
 #endif	
 
@@ -254,7 +254,16 @@ MainWidget::MainWidget( QPair< QStringList, QStringList > &QMPArguments )
 	if ( QMPlay2Core.getSettings().getBool( "AutoUpdates" ) )
 		updater.downloadUpdate();
 #endif
+#ifdef Q_OS_HAIKU
+	if ( !QMPlay2Core.getSettings().contains( "MainWidget/DockWidgetState" ))
+	{
+		hideAllExtensions();
+		infoDock->hide();
+		playlistDock->hide();
+	}
+#endif
 }
+
 MainWidget::~MainWidget()
 {
 	QMPlay2Extensions::closeExtensions();
-- 
2.2.2


From 49bb67b67e05a360fafdb938b5e1f66bb07c30a2 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Tue, 2 Jun 2015 20:07:18 +1000
Subject: Add haiku styled icons


diff --git a/src/gui/Icons/haiku/application-exit.png b/src/gui/Icons/haiku/application-exit.png
new file mode 100644
index 0000000000000000000000000000000000000000..e31424063dca547e6e7859a465d7a9a572c6fba0
GIT binary patch
literal 571
zcmV-B0>u4^P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00064Nkl<ZIE|H(
zPlys>7{-6<=$P(0CM08SP@)vhp|;vXhc1P|9uzus?NS}=+GU9)x&+&wlMxFYA~x8i
zz>r{TA#g835H$zsGN2QsT{2{YbxE4}rh~GpX>Gmm@WI2wkLUfq&jm<{L?Rguhtt7e
zP?Kdj?RL9Gtya5Xnr59{M#|-K&+_^Fc~w=3Mx#U`5ekI@mSr6?P4gb`qn~{NbVdM*
zq9ik!%#i6g4nP`sG+-Yb2XH%%<Faj=K?xy7s-Bx-zXrjP1^~8gk83bAbGgH7mW93W
z(l}9W@^M#y1f1CilHBt`YA}?(GR>_J_1n*lnUcwS07(cj7I0F93m0dY4EO->DPHyj
zH#vSybIniiZgRz#ePXaC0a%s=K&ezh(=>z-_`_}vo%W-IygTG>3!el>FUPprZogVL
zS_g(!$Y!(K4eTw!M*Rz7q6hGJB|<R|jsu_8+mzq7icL83$2%~ZusCPp_w>B%S(v^w
zg|XUYX{q&iL8k;%B*$^a0$Ku|>O0=-DfqD5<YAHf52~yJW#H#OKVz}N^=5~_iot83
z0tonze{ff48Tj7Uc0lTOyIYM$14U5?1OkJAufQ8%v!Cq%8^42Hi9|w+#bP&QSytom
zcrukrsitX)YPGtk>-rtw^GKaRK>zdtVPG#1>FXPy1J>UFzW^lr<udz?-+TZ7002ov
JPDHLkV1n+H0{8#`

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/application-x-mswinurl.png b/src/gui/Icons/haiku/application-x-mswinurl.png
new file mode 100644
index 0000000000000000000000000000000000000000..0787f7b93f0730c97b82138efc9abc0eeaffea1b
GIT binary patch
literal 719
zcmV;=0x<oFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007(Nkl<ZIE{^x
zTSyaN7=|C)ri;*KwzS#71GQ3`!;q|yCPgWDkzrvaq={5S(M3@th{Wo`o5)HlVV#r?
z6h%VeDx#BF=2B~h8yjjf*Os%j6<Z$uu9B4&J=fp+@_z7yF_9^tEaZs30cj$9`3Al|
zsMQyN`wB1?dK@+(T)d?vqpTofz_%L5*ITgY9@y;QjDfn5c1#bJhL%Wv&nq`;E?wR;
zx+s&W@iJslO?(X>0lNaC-hnbajz<9-eD9oOIVewG5E`#vqzfU|_jZXSkt7&K@C1Qj
zt)O&^KzC65@$WbivLy^S?gL<rjK*%?4wn7k2c{drtA^o)0J6ynX1YJSa3>tYWib+=
zh(n_&M`<aB;W^;S0>>&C{cXT_!MrN{HYayt;3eQ!@vRp;W^mhLz&{Oa^Fj6=T-}rw
z=ez=z14x0CGbeYOOH0<V#{7Zwwrql7@dN?42l%9ft{kuzf_D(pH5qAXx!U;&s^*GH
zgG#!wAnR?>)^$i_awJkIYmGw~XE-224r6i%4nt2FczUSa`5LWO$Ft|1R8$%ofiX!}
zSKld%)sd@7TM(O?nnYoK3ZI&)XfqAMm;(Yg!SjYwB_G+fLq~UaFXD4E>Qt@T_^{(j
zs7Qw|T{wJnQ-O{Mc{m-NHezEH1Oq?l?{~3cc`{C?i`K?-BrjP;O}*87`t039p&~tf
zcKfL_S~ifUP|YP}@hl?3M`-VOOV*0n_<b&J7%tQAk&<6>y{5IznhU&`AX82z^(}Qu
z(QvU$1iUAN2%Ho_-*Hh{zDB5%l+8fQq!xxSRexZm7&7k==TGE`ccw$4wtAxgs{ioj
zpQK-{FBkjvZtww*fd(M*f5X360we-az`Va5{RCt;2Gued_6q<2002ovPDHLkV1j!&
BK(PP-

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/applications-multimedia.png b/src/gui/Icons/haiku/applications-multimedia.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd0dbe7771f028dbd215f59c353c25d41dd798e4
GIT binary patch
literal 604
zcmV-i0;BzjP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006bNkl<ZIE|H)
zv1=M}6vsctYpzD2#vo!fV-gVSMN}kEL2Bs{N+96SS#ZjbEd39%2I7>zz#-{Yp>RvU
zNCXQvBx6cF5Dw)|a8OC}%PH;9ra?+d@}|e*^FHw4ec@>(0}0?QFbCjz0GtCNf8bYu
zlF4L>p-|}A;^HFxejiQKJ^-I2zzt*o1&FV$t-V=ZUXCp-E#dWg@pwE)lEh>(A(cuo
z91hVm4M4pUyx-p5{u~O0n4g~q!0-37zP?Vg*<^Kf6;)NKR;!FgBZ|c$KA#Uw)1rV^
z0?hGvjL+wzR4O6MGL=e&TrS7X&JKr%hd7QyJRWC%f1k6nGc3#M0pEZZF5r1I8vT*a
z=jn7h?CtH*Znrr&IACLAgIcZD1;)S#7y<*}2KWjbNx)4Y5I|8BOw+`+ZQO1*ySuw=
zZEc~d>dQzZLMoNw`1qL3%}oHx<#MsrYJHglkY$-(uScm=A{-9W?RH70(_CI&Vp$e`
zzn_zn6BZU0ux*=awaWGNwF?Ni01}DB&uljPq=#rU8sh5e>a_$golc3xVknC8sAXN(
zIXyiEKmwRdCR|)xU|H6q1g2^J?Ii%maadVdA(>3hfWcsp>2%6qFqoOQS}p4J`n}-x
z_7+{&v2A+>EEEa|AvixjpP3tmfe_+eAcVj$3=G4V0UgId2!XEa51w-uCM_5YzWdMF
q|5U%<ZvY?f1a5w(PI`(2`2Gv*oy!PnM?=#90000<MNUMnLSTY=pAFXl

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/archive-remove.png b/src/gui/Icons/haiku/archive-remove.png
new file mode 100644
index 0000000000000000000000000000000000000000..2244327fce81cc093b3158a3e6d480cbda085430
GIT binary patch
literal 702
zcmV;v0zv(WP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007oNkl<ZIE`(S
zPe_wt9LGO<-+Xn$sW@Ma+;k0dieVrnJ5-Q($v`v~2xdas!H5X$*v(s~I*5=MRw{Hz
zC{j9f>5v8y=p4otj<V(-)?7~6>pOK%huqrKFMJQr^X2p7$MfZZG&Mo<1*qo;Il*!b
z?x>J`RE`^Nedz5KuR1zJBeWfaAG%yWJ^lUSzQf^B!I;eCBz(88@5x1%i&GU9<e5zF
zb&tmv0Iw4)T`t#bcXzk7ytI_+nwk>b?{EGViHyWxS8jsldp$kl=WA;bx{hIIhl;W?
z@^W(ATMG-J*1Ec}o9*q^0!2aSI%Y+|Sy@@KF+bn%ITjl^7K7DLFo^DOAj@)U?aTG`
z<Ve!M*_s;6i3GdRXe#@?yv#-@6auQ{?+}dmd_J?m;C5In5RW5t9pZ6L78Q{#1VYzS
z_WJz{3=K`bfaky`86W`OKZ}dLTp`@{f&vWtLk`*-2rxK4KKTqrfVaSQYUcoWwWXy{
zk)m8F%gsFm|5#aJXkub!7zUGYs)b}#%~tE!CA&RO+1n$b>lroyds$hw=-S#;0KR0@
z=mblrs?NHrs;uTj0<pb)$mlxdMkD!((y|#2`vTwvkey(;p{lc2Z8ocUcQ<40Uy%sL
zL<08D#N(7@XOk~U?#*b_7XYu^09~zxg>A<n1NN=2GrG7qv$wNjvr5wcA-axgFt8Gd
zoSBA~atP*((P)cJl8Q~5Mnco@YZ{}gtCPbpxD|^{<%h#9CnO0pjhLqKJ{aT;JX(gY
z0H|Q>h53&l-ht@+_sVV{2cQw!o`RSI@fgH8cmPyqd?po)w_*A^yiSLcYJ|2v@E-}M
kNd`_Igws?E*wZim0>XVu{OgotQUCw|07*qoM6N<$f{L_Dod5s;

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/audio-volume-muted.png b/src/gui/Icons/haiku/audio-volume-muted.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0a7176b3ff8365c4827db7a69906fafb6fcb63b
GIT binary patch
literal 505
zcmV<V0S5kwP)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0005NNkl<ZIE}TE
z&&w%M7{|ZQxEKq`!qqIshBS6IC}m@9GZxApAb*0bQvL(}0+XaHxMe4H!@@$!Bz9vV
zl#<j8ox6I?doTBW-Cv*8>73_$&U3y!z(0aME6_CUS<P1f-y}(jy)1ghU@&01t|K0g
zLy{x{0Pasj>2#VFiv?6wz3)AUX0sWqR4PoCW%lz~yWM8pZkK7A#sYx=`u#q}<1u>>
zjYcC@tJN@_PM>z-^ZB4C3J!+@L{Wrc7?{uJR!7-vmMMzD>h(HyyB&xKL{@y&YL!hU
z6Xx-FV45aWRfQl3AR??*D@#N~=yW=`Uaxn_d(nEmMz7a{%jE(QVYytwZnuMopzAsS
z;LDrnBhKgZ{beG;@py#IW&;tyFpSql?>qd}`X!Ou?S>!-_sd?d7q{CDL<FAaf6Pdh
zWjGv;rx^u<L1Z!+TrL+75yIgxOw$ArK@>$x)M~XTpU+dVScKp22gh;XIBPOWr4q$r
zF*==2;CUX2L;~CG797VR6bf0QH&Uq-6$%AJqtU0|-S79v<#I?SleF1v;B-0>i9|k(
v<x|S#GHWy%57Yl!42MJ3Y&QQ+^56LmwN{*1kN;RI00000NkvXXu0mjfw#4F6

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/configure.png b/src/gui/Icons/haiku/configure.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca41756c7d1b5b2e4b669b04ba7c29f13ddd17b1
GIT binary patch
literal 708
zcmV;#0z3VQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007uNkl<ZIE{r;
zK}#D!7=5dY2StR+PzsBODV5@a2M;1`s+)t5LMUP&NDTc0dlY+W4?TDgMMVNad+nik
zE1FAD4@!;-H9?JrVh?V*Y)G1H*wG|AUoTCtHEkb!Fnsgg<9jn-C;kIX)3iV!@Ug$Y
z|NhO*%@@z}>TQX-u0IKf!}}v6BXIzoP4V2^T-9+L%49M$KR;jRoIh?Sews)m$aP&x
zrBY;?rZ7#ju(q~F#bS|~NG6lSIe&A<ARG?wS1J{fQj(OC>h*f-e7iO_HVDAXZEXht
zSeEtv`1lx7N=PZ8C<>&MXfztFo|F>RY88wz+3pECP16)Y2&&a;WZO0^EiF+f6w0iu
ztWcp)pjxd)r>Cc67{+G+>KzBuGz&rq5<<}8;v#99_6k6NbN*s|eVv35<ar(?lSzuj
zVwbwE2Y>sj<>h5^U6;z`GKE5+41hrMetLR3>$)yA%eHM=SXdy&*ieV2X<8%_Ig3Oh
zt<1q-Q0JWA0|3tXqlt-$!A7HjW_5LSK~+^aj`L6*9v*&Ynr2ULZ!dh`2LME)QK+i=
zDV0i{kB^TJPEAe0_kBnyQK?i=EEaKebo3QKRV|mxyS8mV@9XPpMe6SEMm!!zJRTox
z_FUIRB9Xx1;o;u(_4W5ssdNq?uQ0}XW@l$Bqobo8`FtLp=V5Yk5(5JRP!t6K;QKyS
zS68vUz5O<u&F%uo0r&wx;8)He&iQKqGmNpQVHi7`o10`=7Fm`>CnqOl7{(5OXYF>N
z9n@GX_AQso(bd%z9UL6c*x1+y01xgg&|eIslrru6{>yYajjgS%%ZrPPy;7;P3!rhE
qsQhaT#+dFn4hK*LkOy$~C+8<#rGy~Ene~nU0000<MNUMnLSTY4GC8>b

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/document-properties.png b/src/gui/Icons/haiku/document-properties.png
new file mode 100644
index 0000000000000000000000000000000000000000..8cda3b0783655e312034c6c75de796b6eb52b9e5
GIT binary patch
literal 510
zcmV<a0RjGrP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005SNkl<ZIE}57
z!AcuZ6o$V{Lzt8@4YpGgXh0H56`3TIl0}I~L8vZ$fRdHVQWxE~kI=Q?Za^2}B1ln`
zMqC6J=^_ioky@dInJGgSNh3)*o!l<kX-A{Urav4waPRrfx&P&a_@n9R*Xyc!cM=FO
zM2^$?dUW)D5%_uOV0Cpzc%B#;y8cnX!xw&C*iVFjet%f+fA@gs0HEIo&l?T6+T{NM
zgct;zpP#X}w}qxXC7*wWB!vb5($xuqQ7&(@y!?u>F`12xH9T){f@=Y`{f*7db!1tg
zR4Soq8m9S$X7l^afMDnS{cRQ&X0fa@Y}=;O>EOCQXtmlmdk{1z7JGo>I24OTB9RE~
zcAIQA%fZ1el9U|%gna%vy1quWTBTB{(Cv1~<#LRV-=<b813hUdARLxiT6&A?#<;kU
z(RCfq^T=c}%+EhzW@hq@Uw6w-=H_0$o0>`^#P2Vaq%g^3nu&?WM5FgOJ^e%~l_DOG
zqbN$!FpOHG(Ks3Ujeexl8qH>edc95}k)Tj0peV{BApJG*@bELe-sJ@gN{BnGtZZQz
z2Bv9ZS=KQS3aqYrA1DNUxlXFeBfxbW=L2x^3yI(Y`AbC3(f|Me07*qoM6N<$f>rqJ
Aga7~l

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/edit-clear.png b/src/gui/Icons/haiku/edit-clear.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c4b83b7ac6e451f461973dac0c9a6c53dedef25
GIT binary patch
literal 644
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&M
z2FBeW%xLxI@gtz1WQl7;NpOBzNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6Hc~*<rU5=7
zuK)l42dcMnvI3GiMmj)JK|ujXii!#WNmf=?TRR&d!`99^IXM}~U}R)8Fw|#aVp366
z0g@6D;w&sIyu7?XaUd7S25MnrV`FD$2Rf05hX*JnARr(jA}k^zA}J{eG+a?hQAtTj
zU0qGzK+n+7(8$=(+}zyC$_i+Oy}i975IEVpxH`MKy1Ki&djWyBhqt%4ub;Oc5cvBB
z1Ox;J2Zw}&goTBMg@;5$hDAn3Mn^}dq$H=LC8cGgWMpJy0YP?pVPRouX=!C;WmQ#G
zOG`^zTU%FG*MtcZ=FgwMX3d&)>(*`Bv~l~6?FSDYJaY8Nv17;1UpRl|%9VTf?mc|?
z@cHxSFJHcV_3G8zw{Jgu`0)Aj=PzHr{QC9l_wV0-{`@KR`o0Pn77`^ve!&d#@_Ksq
z_8}pusXI=cy7Kht(+?kh{P_EqYvr0*Ks9qcT^vIsB<CJv7Gq*$U_CHD_x85j+hx(!
z|CL*89p0NV|LN4@3TF9{bn4Y($NlDSw$%Pe(C#u$3X&K6yhu7fCUn)d`a9w*l_zg9
zelWf0v#F%Q=47;D5{tq|cc+67rl`yh?hoc}SiUVHxAXAV65D4bR(lGku>JkEM|1so
z>*;dxIy;s3ojI<x+U-Dte%qDV>&$kq&AP_I<(sjr<Ku1am?9a8z1sZxK!-ATy85}S
Ib4q9e0FX@VYXATM

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/edit-copy.png b/src/gui/Icons/haiku/edit-copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..23a2722aabdbb3ec3f12fc2ab710fac329f9ee7d
GIT binary patch
literal 545
zcmV++0^a?JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005#Nkl<ZIE{^v
z%}Z2a6vlt|!|RNp!$2gI;MBm-2Re#H&Q#!{S@<vLvY>3^IxrAi1R(@MB=kZ1RzVQB
zDO3ub#mKn2>M*2Cnt?_#&dqt>`?i>m=FUfS;N|6Tp65Bwd9<+`L~chJ(?Fv|{W@lU
z@(s_L4qrcD`snMrat?P}zTCo`x^{tE&G;rjTUQrK7ASnrGysB^Z=(A;0M51)fD_CP
zKmIc%%<`8kAD8zKQlgpL6p!+RhMqhR4e_)>Os6;B+V+dds(^G(a1M3=SXtR&=JEXo
zGqugc#QZ(m=4Dktx7x8fI{{F-h7hp0xQ1=#JSsgsrx_i+j#2=$mj#L_Ara0Y0B%tr
z1jOS5#Nz`EcMAcoTbBX4iC*qB1Ehqdr4$<*-#p~;@dQ4fRdGPo0jTm1N-2bZSZt73
zZ16uFxJ6u%F9}GA5U{$sPBy#eA$NBN85z0S=)ejDu>$7-umX9cglO~<{rwl~_G?I4
z<Dl@Hp9gE7Fnp(~kmFrHLO?3DNiMhVp(heCG>yLwre87lE;+lUo1CkF9RH(-cLcqW
zNSJUq<lV2ec{BI{?n0XPwV>f)?g~M#VOSW3_W;)|y}As%mC0;>n3|gJYc{J?GMWBd
jN~CpN0sQ|G0k-}CTM^nm*fBId00000NkvXXu0mjff6Msz

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/edit-find.png b/src/gui/Icons/haiku/edit-find.png
new file mode 100644
index 0000000000000000000000000000000000000000..380b9e7af2af4b4a15281c82973201fddbd86be1
GIT binary patch
literal 636
zcmV-?0)zdDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006*Nkl<ZIE`)7
z&1<7o7zOZOlef*}O-5>I!l-F01rbG37j`CNRj>*!+=(C}T?&F5x2^`}FVG791ug?_
zs>|6FkuU>7SArn@&_(m=o6y=g`M7UfH0`9tXLIkvdG6t!bMKk)q$>CfdHjp*$qFCi
z#mW8$JiItGGez*p*4EZ{)oRtj!GUJ8`8mFYMx!y_*w`=}4sCC5x9~pxhG>dl*y(gY
zx7&s41<>pDwA*bV1PEC8KZ16v)lw)F^!xn*{zM7my}i9wnx=R9{XV4l=emTq8;!<;
zwY4?*d|s#1aeRC%%QCrKP8`RUmzTle;h~+Ko$v91iD6b(SASk#UoVfxV<7~+UeC$N
ziSc+W%Q8_EiQ`xZLAhKO$MH)?M@J9wTZF>={QRxKU~s7=O;fwOyI<i~tkmoEFBcaV
zFY!{T1n=R;2rm?iMH7AJZVrd=I=(<Ngm49qq6nVDT!dF<XJ@Yrlu9L=o13?DxtuJ^
zKFsBESMW(agQp`ro2IF=v$IQNe}DgvBuV!0E)LMC*Xy?ng~Bw!0v2X)0}m>d%H0bj
zNs@2yHBM1RT&Yxk@#NVbCrNS-%?MeoR=c~hvI0T~k|cQ(_wg6n_;hJ$DJm9=pxf=<
zNRp(A-*b4aR4N$^1_pzH5Q18*_9~vAy6!u;oXO|&oM)pD;SF3dX>M)~?%)wrDwU5$
zqmj{QH0{C5xE0|nP1EZR!&6h9oZ{v+{4o|UzVchBVLa)B^DO){>2Equ;B<CQ@#sGz
WGvnbXn@Rcr0000<MNUMnLSTY7KQrF|

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/edit-paste.png b/src/gui/Icons/haiku/edit-paste.png
new file mode 100644
index 0000000000000000000000000000000000000000..d33d6a9ac976d26a1693bd019c84be6543bece8b
GIT binary patch
literal 490
zcmV<G0Tup<P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00058Nkl<ZIE{^w
zKT9J~6i1J7GMj9XsO*Xk$PQR&zyvKsSdlFRBM25kB%t62u(Z*yU@dI5otQFBK(^aT
zunB?)DoDUpla0Ye;z%a*-iyVU#6OwYz1`#e?s@0l2i_F`CV{9=#<w=I*=!?~N?rPe
zG=N1&FRgygNPU<FLCQ)|>6;>vNKh;mhpcL#v1Hr;@PTWNkE#dT`P*-R&~P0`7t$ts
z7hA;RLmXzlv$?(wKr)#m5{Y0K!_;bBXlFYhe|{y;7;vODRqRKd@o|$_%)m5F3WY*T
zGZYG8+xJXQ&+seXjdI%dEr6<nln@R_n3$Nvvg$2BF!+&JERGPM9B9ZlI{=V15CSR{
zi}Uk#Gk~sZ%+4A-JUqIu`vH1-dRbdrc(-lGaqp!KN^}4S+Z~})`b#c%@Tz%!eu{yC
zPwf#p0h$KUXfG=(oedlZl<ft0VX(jd+CbMemY0(*;C~F#>GuXgJnx|H0Z=ti$_;sy
zl+Pn{`h|cfa<%t^i`}3%0hk%Q=Je(bpbmE@r&Yda8Q*4rKfj?|q1-%oH3dds4(R_U
g0k{L}77l@{CuNPnvBL105C8xG07*qoM6N<$g2w37;s5{u

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/folder-new.png b/src/gui/Icons/haiku/folder-new.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2b66d07ba6a5ee3a381edc9e5978d25eaace068
GIT binary patch
literal 415
zcmV;Q0bu@#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004INkl<ZIE|%`
z&nv@m7{^~<o^9sG4un=aNQ=XE5-y{NvLpw80mWg-!AVKV&C$g{Zc;9aA{Un_ZX8{h
zGA-u2?Q8bk#&>I*gW_WKS)SATsptKAKX3TwXevir!)%U^v7*&Or3B~a>@Qz23zP(4
z+=FMv%c=(QM}jsq%Divld#{w?<`O^91w07AU`OA=*j!VnrLFoGFUeos(p>hzl@ma~
z<FrPX)}wB}N*e(5pl;)MI|OHo0(S9w-2?*t$^e%u0*C{!2|y+Tx~}ZUFn**a>jUO&
zZ{&pd;k`1zmP)ZRlAT%$vnV}nOipjKqSYtVUjS|oq|*^*Skk$~z4i7QY;ZYh0_30L
z!~jVbiGIFDXsBzf36P1t<N;HRJdalV4jS#s=E5hK?};>Eif$3Lk}+_rr&|VC@Bx?-
zGl&^aV6UM;E(!SpX&@`%1o6`g_S&!MRs|HHxEtmO$g0OynJ@D1chhn!4bA`n002ov
JPDHLkV1h9Ey)Xa(

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/folder-open.png b/src/gui/Icons/haiku/folder-open.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8852c4f18e74b95f050b8849f6f0a983c1001e9
GIT binary patch
literal 404
zcmV;F0c-w=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00047Nkl<ZIE|%{
zJxfAy6o;Ryf9zJiA>ANwC~2~$f*>fOl3FX8qrs)IDd-cl1nq6o?$YKGy^Pu?$f3;4
zYrb@^Uc6VY4GA?E{H13*aL)5P=fFQvWSTBkIZJGEqIjX#g-nL4;|C6bt^i0xiSEsE
zs(=`fpscKuoZJ4cdoE<}nFpqUCjqcDNn$t2Q6xHe1Me@b;(>sl5HJG$#4#TcH2^+U
z<{$`%i2yzT5rYv;B`$nmTXKRxkkEpLmeWB=ZE5M{gS8#G(H}k@^X#AJriAP2?#xCU
zukZ{dXqD=;VNn=u3XbuKHz@glKJ9W99V}rwyxEO1s_Gv~&?uG-peY(QMZ59>{($sw
z*Ksi`g$B?PwKhe&@(L59(gNG;;JDa8Q&cTVb}bK<CNHQ#2OPi>C4=|+GnB@4X@OY*
ytAhcw#GQ_QeM?Hq5|b4;;9TC223pdofAIw=#(1xH5-_#^0000<MNUMnLSTZ<ldc2+

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/folder-orange.png b/src/gui/Icons/haiku/folder-orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..abc34ba3fad314b151f95e700034346b7f8953c1
GIT binary patch
literal 725
zcmV;`0xJE9P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007<Nkl<ZIE|%~
zJxo&p6otR{UM&(u)Rq=d6lzfMCnjBFAd!JZV;mj2I2avtbkWVh7#AH(95f083elK|
z;$Mu$iU^3%*b+dfElq7{?JE{r`ug);-*d2oHkz1tlAGK+oRgb-&V~PkR59Cu9IzF5
z3hV~f0qJsW0h-Ib1|R?}z(QHT?Q*#e^!4?5PhY;XuX;@lsYDDpx<F{=Beo_7mWItN
z#UjLlGpXq@_n_c#wj0HQG838h-3DB`uJ4H_WP*#!_<}Lyyoe!67!|9oEH82S)R9{z
zw36q{ombAttoP#B-P@?Dip^@lX0@<?uY*J)fj<<*GaDw66QH^lQIuGingr+(fa7Ne
zMsIF&wxjDM^3gEOT8izq8k(9K5d;AM!!U@)<MiKqNOE;6gV)c;gL9ru5)fExsXMo;
zqYFV0Syj7%?D~49QY!A@4<!9_m?VL!Dl=xYnHO#^(TL2u7rhsNVG&3_zjmqn`_~wT
zUP3Qvlr)XC8#ZEZKR}|bgR4&_35O#@qfrt`jd|ZFKret;zDdvg`ysSq5v@=_E96o0
z3aX-jVPI`>Aj>j=K!8kI$2T@G2rL4a$^s+r?sv;=?VWW1x?aL4Y3SO|jU+)pmXpNd
zNftw&0D3BeWXPdF-csLku+DC$n9HFm3PmMLF}s3VP%wRq;twqGe&m&*DDp9&RGGx_
zsW(q2VuAUijxF27f~rznNmE$KpyhH%X_@J%Z+N{AuLF<%7G=NuC3xlS<Ga!-VRc7?
z%|b4lN6jgS`3ys^$4R9EPXH@W17s=%094>*Xx8)K^Yq02Mtf_6Xo5AO#^Zq-A>bKM
zUH*knf8hTH2{^gK*=ckgK4FxtI|MZTV!%Ja4)g;%D~Ue<1kgcos@_l`00000NkvXX
Hu0mjfdSXb`

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/folder.png b/src/gui/Icons/haiku/folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..003526358554ceec271bd7cc6600c84ccb76cadb
GIT binary patch
literal 723
zcmV;^0xbQBP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007-Nkl<ZIE|%}
zOGs346vlsdX1dzL86DG!%omv!Mv{v%2!e>92->w6h!#SNpnXEil2&4ih@cdD81^tx
ziryKh)nwDdN9s5_>Wtob=pA*Ohj-@w+svY@XweT2oU`~2hwpswpBPuoHXsHR15bcT
zzzi&=s|YAb_elT=C<P|c3%cxf`+=60maooxwN*LhOgz2?hCLyAK25WuERU^QvT=LE
zd>oin+h31#N;TCLVkMysIS0pY19n~4cd8);!ehkzPO=QMWSDdi;+IpE&@v^*uHG=E
zlA81Ro%7X0-zVzZT3?gYG%VJ9u;ybf-A5o0VA?mz(v$-WGuSLiWFx$FOaL@XK<&Hs
z`s+2-<><Ojz_&moX(J=Q3~ON#k|Y5jgg{XgUOc+P@j@5&`YxsGo43FSxbt$e>JIJS
zg(OLAu&l+JlSEfX81H$B*ENG~G-1fdM3!az?>kVZN4eNGcme1(0E?Hdv^Ob174#J7
z8l+ap&Rs{<zG8M)Mp2$N;Gder=ksBn8{^rBNq}1bhO{Tmy^elFDu&Ra2yGd(2x4Uk
z*_5ELJdgQc0JqzXtopg!<?RG!eqPYq-1;h*iiHu0Fe0v^$LA5T5F#36tsFxQ23ekP
z(dQZjXkHy8G3p7%_iV{LQe0q0N-jWR5wQ|RBo;7e5&C^O2=@@JJzvFClv6-zbrKzS
zUk&$-k9kk*E!$*RZ%`nvA`<f$lZ$+t*@S7(LE{(iHK5~fQFaY@)P}|fpN*U4$o_4G
zHr8mf2rYtpzJTsG5BWI9V_+kY1uPl(on_$MnI>=5;kqZz;b9Z0cnpiIaeo9)+B_?e
z3q=2*{{<s(`s_i(&65=({ko&TX2A3>@z2<RyTJC<!XHr1IH?5PaOnU5002ovPDHLk
FV1ga{PI>?U

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/list-add.png b/src/gui/Icons/haiku/list-add.png
new file mode 100644
index 0000000000000000000000000000000000000000..22fbe9db51c120ad0ab1adcedba4b8664a0802b8
GIT binary patch
literal 392
zcmV;30eAk1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0003`Nkl<ZIE|H(
zyG{Z@6o$VI8!nBBn`~n!3@wpHE2Gg6Ond?!!;07<9f?sZ9>UfFscZ~(HWU=bihxAM
zjx1(oWwBt{WpUQPspdcV=R21f16>p-VsR2^ml16mI;*KmW((O``KEld(A~!_t+!SO
z!Sh-G5~PhSBh+aCcGm6yV4^0$Sxr@(O%ITsi~!sp_a8ukqMf&EB>YB!l$AP&01OxV
z+^#dDvdD=K(d3D$!6{dzyHYi|os6xbi%z2>``7(_6F|BWPk9>wm;sP60UYI!RGW1m
zJqdt`ix{;>gc|@7U>#ba`CZ}+od`e-#Q<Rb*fz&3zw;UO+(mA8A;&Lc#I3kQ(hCWE
z1FxnpqCad#MJW{km;#a>g8S7`^dHHaFE%JP6<S+701#^F(lqvd4B(R{59|f{i-AA$
mpD=VuKk`6kNe_X+s_7T+uXn>d^Xhv50000<MNUMnLSTY;c%PvF

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/list-remove.png b/src/gui/Icons/haiku/list-remove.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cc22ed1ee34fb4b67d4f85b297822c1c0102236
GIT binary patch
literal 183
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`b)GJcAr`&K2@<T#{1TEq5;d}q
zWUg%}*tB8dqL0VkNw1#2rc&tip##Sgbe^akIi`5TanjlT_qN}X6A~^YCMF~#?D+77
ziTSm7*d(5c?~i4ffk2u2uzK6(@7wPGK6>Dk!z6KuJY$*EgoGdGIi7wpG%)xuA%%fu
gkD~K=4F`4x)^KU-3h~S;pi3A$UHx3vIVCg!0JsxF`v3p{

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/media-playback-pause.png b/src/gui/Icons/haiku/media-playback-pause.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3da6e829f195fa4af6a32220d6e0879eacc39e1
GIT binary patch
literal 430
zcmV;f0a5;mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004XNkl<ZIE{6a
zv1%JZ5QaZvAy8pbC|4NN*tHc<AyTD`$`l4yc5j0_gP%h0U<d@ig$d~r(xnKbh$<O}
zY-juK_GV@e7g0_(C;O_M`DecQcb3}%$UbDBc3$rs09yc(q+b49&iT$Y`|OS0jz0DW
z{a36$DWzC`Tb{7scMo84I60o4Olb;oVSY3}18x{Ho?Xt~?Y`M<^t&H-T%BHBu;9E0
zV96+@YzkEL|8W2iEjm3~Y|cFZO-e5LbAW#h8l4`s1BfY7Xwf9i%md8p8xB%RL|G@3
zBnJ=`r;CaQRH<?nO}&HCO8U}wu>)9bZbB`!cVHa{)^VUoDP(=e?iC6x*p_V<JAfo{
z$)p}&W-l(e*+C`My2HOBx#b|8xD6oTme?)^sI+pqO4q}B0HF?KnzcN80Op(8dgCBS
zc+o+y;By;*Kfu>kK?00>01E!{3%G6Rk3hi#tbSi$NXGkC41q`B3vf@y0WfwW0s;8^
Y1lsWH;rm(FyZ`_I07*qoM6N<$g28>YqyPW_

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/media-playback-start.png b/src/gui/Icons/haiku/media-playback-start.png
new file mode 100644
index 0000000000000000000000000000000000000000..f65bfb7548e3c11c1b2fe1e9feb55445305134d4
GIT binary patch
literal 531
zcmV+u0_^>XP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005nNkl<ZIE|f=
z&r1|x9L7J(?jkjetOKk2gI3twtb~d{BuEMZBdklepnG-LYtU`}f(~ATx_Ah$6$KKw
zDY{ZgQY#&D5F4}_H_+U1cHVhsI;ca-uB-IG_wwa^K0NR91t5PfZ*h}J@|@s*H1cdD
zD4NA!cx*V}DvwEW?5N%-K<}+yJw2Evb1_5TVBaMfmyayhT4s$35F84~jArz%(_IKD
zh$rG?hq95LQ$4pggU!3Pu-{STM_WK@G^Ho{6L`Ld=X*#bN>(9vIj5;<^}e}dp2y`a
zTiC4uH&VJ<Q1PVKFhMM!v(QOyD0e2RMjuv1)#W?$fZqVnu4}qdP!PUoIg#TLv~wEW
zXS=UCic_?O{fVC}1H=G4-@|d8LmTfn*}*_@AhDWVePc-D4i%oq0E86SZqxUgB)25%
z)9aWe^EJOv!UV2#u|*qz3)_p^7_W@ad|?8EGB6(k>atGVtv4G3s2MfPDf15>dCCGa
zz$~z~|0K4X4Qis+Xx;#G)`T(>Of$J>{K`KU2mzLFk#v*0n;ozgEhtf9i5Hm60SiFO
zmcs;=W5G9Ih830=r$QN+1AZS|&OTrRcnN&q3GbQOi@Va!*r<N4kmLbyA%q@Le*suD
V)ux?g8rA>+002ovPDHLkV1h>$>EZwY

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/media-playback-stop.png b/src/gui/Icons/haiku/media-playback-stop.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe50fd82a11d640b34a608fea39487e75345a68f
GIT binary patch
literal 269
zcmV+o0rLKdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002gNkl<ZIE|&z
zF>b;@5J1sS<Vch>u8>lY21Uq9pKEXn4wFmd2)RS5P*EWy8h2YDCB|mPJ4*^jTDJq+
zZ82}ZcHqu40a$Dnr}^`I<{3P0kGuM#ek}l&Z_8P=u3Rto@BON#UKIdpN~^64P*Z@%
z0zjg0*0T$UDFRRcT<k(Cz5+{@fm;f?)MdcT+<(9jFaTZbXryt?YtjtdvIQ~8fJAW@
zkjMZAs_L2#DP$m6pw!Y=a2*#2grDF8`Z4guC*M4|fL{*4b@G3m0x!UWFN6IbG~8z-
TUq(3L00000NkvXXu0mjfJhf{^

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/media-skip-backward.png b/src/gui/Icons/haiku/media-skip-backward.png
new file mode 100644
index 0000000000000000000000000000000000000000..454875be105ebe3c55ad721cfc8dcd8bc3625690
GIT binary patch
literal 556
zcmV+{0@MA8P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005=Nkl<ZIE{^w
zJ!lj`7>1wRj<*+#5f7FSh$1OO2oV$xgcFg=g<x}tqM!&uQUpZ8VIvU>OG_(bVPVRE
zg`x;nY9SUvkc10F)WX7*3;_w*x!u`6i@n|Z@%;I^`QG`SdB1lCIK~u3PLr0+3Y%=u
zt^#G|_{1`jU3$y9V!f~1^|)@=<N1yGm@2P;eJ$Cr&RI{YkE$^zxcA#IAk3VZ7Y9Ug
zJ2n6Yfc=0&mHRVyW-f$Y2r$?Wkn`|RTA{SU)oxok!(#1L?Z)ttVZ6ZWH=8&BP+9@t
z`K^m(<|@}KcZ<i1D6NPFBTBQS1!h@D2i2CMvC^mrB53Mn0?-}|akO-)G;NiwtZ$B)
zjE{|Xy}Z4?P2)x5yZ~@~2LK&tCQeNpw5Bbb!1<$XfM%G$g^Xpkdt^k6oE<?2`me(P
z+Slz2QmdgGLI}o?@lQY+Yy$8TK%fHbXEvi3M-c__pMVG)o$TvtAGs;ldCFw5R&3$>
zSDH~*hy;Mk5BX9qQQ(0&WkL?TuO9NX+#y6|1Q(Z|d>7FAK7cg4HJ(dT#^hPDPFmmr
zA9>6w%RNSR1rbOslcV1uec&N^4#~V+WN+48?OjFSqxh29f`}kf-*KBg9A=Ws1Reb@
uz#7;1#?7p=#b@Z)^$k~%yrscTKfo_?aMTIkou63%0000<MNUMnLSTYw0{pH3

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/media-skip-forward.png b/src/gui/Icons/haiku/media-skip-forward.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff0b3105b337d126a8ee95c8f9f91d5d43b6c3ac
GIT binary patch
literal 553
zcmV+^0@nSBP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005-Nkl<ZIE{^x
zJ7^S96o$W9qYHy5ZkR&Y)gTiQ>;xqeg1Es&L@WYP1aTW11#62fEwr#wtP~QFKnleo
z1O=mo8i<65ETjnH16eWTf@@4>X78OlI~MauHkm+9b?(nO|Ko5CvTA^vK%V#9TZiU2
z&y(W5;t?PxThbA8;%er;b;<fL{AxI)pGWK9uF7a7tm#@<)3vbru^MuW2f0iJFiHa@
zD%UI5IL@sE)LP>y4^MftbSq-TVlM>_bgbvt?P!Odb3ODm`|i%jnIF`7F542vcL0!D
z#svM0m#gKo8!fa{q+k!(tTb1~=jHtAAP7=Cbzqs6)qSFSQwCSLY2SOf7w@0<Rs|}>
zm9Jt4V0gZ_#VO+23HBA+Se#uXnUz5tL4=}1ZObyDaI%ojdfH1J;QHGj0NkH0=0P)Z
zkRB1X<zV&mDr!l={^*@V>7q?2mE62xthLTphsIdrja9Y=r60|zAUR@#k%ij}yE>Nl
zaJYD*m<N!*CE}@=V~R0OG3coHANWaxX&wSE0W&2S;)PVwrU~Mi_|7bkfk_bvEM-MA
znzb7M-!=qT5`Trw1j|fwAHf9hhc*abWD<0i#$^h4#~m6>0>6MAECXK>2|(i;nFNO@
rp}0tc*FZhRk8*}Q7h(~gI-mXn_#owF+$zwk00000NkvXXu0mjfrjGN!

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/process-stop.png b/src/gui/Icons/haiku/process-stop.png
new file mode 100644
index 0000000000000000000000000000000000000000..cda69cf5bb448b52589a3419ee4f0c9b7790e716
GIT binary patch
literal 754
zcmV<O0uB9%P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008HNkl<ZIE`(S
zT}V@L7{-5Y>$o`uS70m7{34+^pfLl35*(R<23?pJ34#};735V{U34ErHBciXghkYa
z3Q-vt8MaJGv(lIjD@n7h{hiFCuFlzU>qbMg=kA5~<AL}0r12je21SN)8#oPE5%A#?
z_yy=&d($=-<={TycKbY)m5NK2v1eqUClW-2;QjD0PkVbW^*}q2+_vB()HXFXb{+S4
zNSCB-u2QKK<5N@Iy?uMIU5E<605ES{ZfR(ES?%#)0iw|;@5aU$86D;O>?|h0k(tSE
zhl71ZMY&4@1100|=-+~Kit^%2O-+t@ZH+)M$c@(4p^kxpwzfdvX7<mY`$`o>cGzsB
zbe)}cJ3H+5{eeK>%`ccS9R}rSNr_@!T_rL%M~BZh)F#BOak$eAr_R^al@(-Vp)W2H
zo}I;r#W<LkM=`VjW|IrbosxvHu)ybu3H(Al2Kt)e+WGqWrhG|46N2ac{d9G8VJs|=
zZ5YV1d;oA-tl*SlF%p`F`0;~rm}rJ;XRE53a#Jb(ghITUp61@zm^U9vSLf%CN)`)F
zNpb<ZEC#H^!(lS4R?;<%i*U8U?Jkpbo!_Al{!oa{V9?tK-Iqa03V{x&%gZr9vIzJf
zA`!A}He87W^@W9HvZkR6fj<(#Cxo{Ty4^5;NR}&;La=NYd>3L8h+95^fAZTm3S=4Q
z`p<P;=dGr3f75Us3>5>$(h^@ZjTsmL!sa-vSs|LQs?`ovC8eswRF#Q%oFo_(aHJNz
z<zTm}DypjTBpweufKK4!28pH%@cJ|yac!b60a!NSx&rireiyC;!3PNQ2C1XqOF~IH
z?9TwwHz)(*z*pcI1RlcmAoKw9+rk7;49AM0WiK4a0oMw|=3sILM*3k87y`t$Fl~_u
k*aPeWq;(TvU~y~XUojstL&DQ1&;S4c07*qoM6N<$f~?e7Q2+n{

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/view-fullscreen.png b/src/gui/Icons/haiku/view-fullscreen.png
new file mode 100644
index 0000000000000000000000000000000000000000..7cc462d9179a1bcb37a86c5035da0886f673284e
GIT binary patch
literal 564
zcmV-40?Yl0P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005|Nkl<ZIE}@V
zKWGzS7{-6bFSSX%3r#sJC0%atAb}2|LtP>nTLL8xYH8?FM;Ae-E@G_?x)^b=6~s2N
zQv`!`>5w1}7F>#HJu0VYibKk!&6%8~rg3O4M2(6#_`tV3FVFLS@4o{C&RkFfTAT(f
zt7;bW>2qL|_ztR13B?v9$=l;FMqxcA)PNR`o}WAcU{|)urRS_7)c6^Dex>hZI2M;Z
zT|NLZGgB_%L{k}^{tt^>@+V&rG42ACcX)sC1(S_@mY#nQ)Xm*hMIDw$qelS{PUfPq
zXg!H0rQ@epPC2G;o<V3UR03Y^Gd1j;$HRufQ@e6R1`w82HFN1Xi%-d*`;hk0mM%B{
z>>Y#~!Ooklb!2nTxs^;F%cb2}t7?}3wHs6!;P&*D`seaiy;l3$_F3Dd`t@s9>p)~*
zqjrndZdY*u;Bp;o)59NOl!1ogAMpPT1gJh>4-D(?q=CcGA%qf&E%=qbK|Omv=!ERb
zpS(i7T4bVNZf-0KN%HoDV{xBu?ykLF)ys)QLjIjJzxHm6f$`b!$e3p-mGBDyPnQox
z9g^o)_`>|dvyd<TDl-G)vx++8aqgjc3!_mDyVBd4OS|vs**pEtoLg(wA`^x1$XHVh
zAdJF#Dl;?HoJM0k+iX&YFgG`rmr@D8!x)9PkG=ue`qB-Ub3Xn60000<MNUMnLSTYJ
C0|Tu9

literal 0
HcmV?d00001

diff --git a/src/gui/Icons/haiku/view-refresh.png b/src/gui/Icons/haiku/view-refresh.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf928b35f259639d089e0d1f8d3ef7aef251e60d
GIT binary patch
literal 717
zcmV;;0y6!HP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007%Nkl<ZIE{so
z+e_177{@=$-%jd0%$9~LPnG68L?I}P5E@uef+2xWH$_+71$J4|AJDCk1cgWt9qc5d
zB&;T7;S6i0r9Th*>1MBU=A62N+J!bXJA5y{&-;9y=lwn^w#b}7ZlM)@>V8lsLnOe0
z--X=g0A+sliS+;)gBjWWREqVPN_LyFtygSSw)1%fdq^=FQERkBBN3*BVBm8<_w4p2
z<|gje)}DLenefbY%Jw1^03~Oy+A5DV<P{ae$_mR%QS=FkB%5}i)@WlhX2c|NpNmrK
z5!zasLm!$i9+t?juFKtbsKGt?gZ7T=cILc;5DlSDN;7TWRZ>uK^k8;z8EUN#R4EuO
zR@^g7%!Zc%kO=y|$nvL`I3M2!;RJetc>pnhL5y~t9R6C@l2ciYTC0z36O8-<D4ics
zI%|M1u=rb|0W`XykT#L=*=5)kiWQXb${Ju*vs<sRrfl0Q5ub$^9^33M1{XF0{;rYs
z(~Q46zQqqtO#(p`mf8zvPSxGe>$RKeZnqcvliMdy-aPvkUm{MQSx|1pkdhiRXMBR!
zj;2wR;mrRnC;_;q!z4u41L}Ct#z1e|O;8^FvCEWigoI>-b9fct52K5$1I*=BgjAYq
zF6VOtp8iIJa}-#{WJzad*(Gy!@nyyD4<MYm5`f|lvE=g*Cuxv$i9j4$iw%ppw0^;-
z)Q1Cp05tIikTe9wzQMSo5lE2$JmX%(pkszmz)Ma=fhjEqbV;B}g5*LlL}6|UMaVGn
zwu=$_9fa%v1|>qiZqd`)&B()B2&I)#Yn3qO)?moki#|1-=u(8BM`m6O@x9N9aJ>h5
zfB=AM?b}&E5SZE!ZU&GFsDTLJ2fRRZW1c?&^vwy)d~mQP00000NkvXXu0mjfuUSdd

literal 0
HcmV?d00001

diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 30464ee..9e5435e 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -22,7 +22,12 @@ haiku {
 }
 LIBS += -lqmplay2
 
-RESOURCES += resources.qrc
+haiku {
+	RESOURCES += resources_haiku.qrc
+} else {
+	RESOURCES += resources.qrc
+}
+
 win32 {
 	RC_FILE = Windows/icons.rc
 	DEFINES -= UNICODE
diff --git a/src/gui/resources_haiku.qrc b/src/gui/resources_haiku.qrc
new file mode 100644
index 0000000..f038534
--- /dev/null
+++ b/src/gui/resources_haiku.qrc
@@ -0,0 +1,37 @@
+<RCC>
+	<qresource>
+		<file alias="QMPlay2">Icons/QMPlay2.png</file>
+
+		<file alias="Icons/media-playback-start.png">Icons/haiku/media-playback-start.png</file>
+		<file alias="Icons/media-playback-stop.png">Icons/haiku/media-playback-stop.png</file>
+		<file alias="Icons/media-skip-backward.png">Icons/haiku/media-skip-backward.png</file>
+		<file alias="Icons/media-skip-forward.png">Icons/haiku/media-skip-forward.png</file>
+		<file alias="Icons/media-playback-pause.png">Icons/haiku/media-playback-pause.png</file>
+
+		<file alias="Icons/folder-orange.png">Icons/haiku/folder-orange.png</file>
+		<file alias="Icons/folder.png">Icons/haiku/folder.png</file>
+		<file alias="Icons/folder-new.png">Icons/haiku/folder-new.png</file>
+		<file alias="Icons/applications-multimedia.png">Icons/haiku/applications-multimedia.png</file>
+		<file alias="Icons/archive-remove.png">Icons/haiku/archive-remove.png</file>
+		<file alias="Icons/list-remove.png">Icons/haiku/list-remove.png</file>
+		<file alias="Icons/list-add.png">Icons/haiku/list-add.png</file>
+		<file alias="Icons/edit-clear.png">Icons/haiku/edit-clear.png</file>
+		<file alias="Icons/folder-open.png">Icons/haiku/folder-open.png</file>
+		<file alias="Icons/view-refresh.png">Icons/haiku/view-refresh.png</file>
+		<file alias="Icons/audio-volume-muted.png">Icons/haiku/audio-volume-muted.png</file>
+		<file alias="Icons/view-fullscreen.png">Icons/haiku/view-fullscreen.png</file>
+		<file alias="Icons/configure.png">Icons/haiku/configure.png</file>
+		<file alias="Icons/application-exit.png">Icons/haiku/application-exit.png</file>
+		<file alias="Icons/process-stop.png">Icons/haiku/process-stop.png</file>
+		<file alias="Icons/edit-copy.png">Icons/haiku/edit-copy.png</file>
+		<file alias="Icons/edit-paste.png">Icons/haiku/edit-paste.png</file>
+		<file alias="Icons/edit-find.png">Icons/haiku/edit-find.png</file>
+		<file alias="Icons/document-properties.png">Icons/haiku/document-properties.png</file>
+		<file alias="Icons/application-x-mswinurl.png">Icons/haiku/application-x-mswinurl.png</file>
+
+
+		<file>Colors/QMPlay1_dark.QMPlay2Color</file>
+
+		<file>Languages.csv</file>
+	</qresource>
+</RCC>
-- 
2.2.2


From 5d3142148cd6e439bd32d148e70bb41bc1065e69 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 3 Jun 2015 13:21:15 +1000
Subject: Fix ffmpeg static link for Visualizations and AudioFilters modules


diff --git a/src/modules/AudioFilters/AudioFilters.pro b/src/modules/AudioFilters/AudioFilters.pro
index 01d083c..0e02939 100644
--- a/src/modules/AudioFilters/AudioFilters.pro
+++ b/src/modules/AudioFilters/AudioFilters.pro
@@ -11,7 +11,11 @@ win32: QMAKE_LIBDIR += ../../../app
 else: QMAKE_LIBDIR += ../../../app/lib
 LIBS += -lqmplay2
 win32: LIBS += -lavcodec -lavutil
-else {
+haiku {
+	LIBS += /boot/system/develop/lib/x86/libavcodec.a
+	LIBS += /boot/system/develop/lib/x86/libavutil.a
+	LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx
+} else {
 	CONFIG += link_pkgconfig
 	PKGCONFIG += libavcodec libavutil
 }
diff --git a/src/modules/Visualizations/Visualizations.pro b/src/modules/Visualizations/Visualizations.pro
index 7d3b946..021bc40 100644
--- a/src/modules/Visualizations/Visualizations.pro
+++ b/src/modules/Visualizations/Visualizations.pro
@@ -11,7 +11,11 @@ win32: QMAKE_LIBDIR += ../../../app
 else: QMAKE_LIBDIR += ../../../app/lib
 LIBS += -lqmplay2
 win32: LIBS += -lavcodec -lavutil
-else {
+haiku {
+	LIBS += /boot/system/develop/lib/x86/libavcodec.a
+	LIBS += /boot/system/develop/lib/x86/libavutil.a
+	LIBS += -lspeex -ltheora -ltheoradec -lvorbis -lvorbisfile -lvorbisenc -lvpx
+} else {
 	CONFIG += link_pkgconfig
 	PKGCONFIG += libavcodec libavutil
 }
-- 
2.2.2

