← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3103: Plugins: fix abstraction problem in queue api and calling convention for DCUI.add_command callback

 

------------------------------------------------------------
revno: 3103
committer: crise <crise@xxxxxxxxxx>
branch nick: trunk
timestamp: Fri 2012-11-02 00:13:45 +0200
message:
  Plugins: fix abstraction problem in queue api and calling convention for DCUI.add_command callback
modified:
  dcpp/PluginApiImpl.cpp
  dcpp/PluginApiImpl.h
  dcpp/PluginDefs.h
  win32/PluginApiImpl.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/PluginApiImpl.cpp'
--- dcpp/PluginApiImpl.cpp	2012-10-29 18:19:03 +0000
+++ dcpp/PluginApiImpl.cpp	2012-11-01 22:13:45 +0000
@@ -144,7 +144,9 @@
 	&PluginApiImpl::setPriority,
 
 	&PluginApiImpl::copyData,
-	&PluginApiImpl::releaseData
+	&PluginApiImpl::releaseData,
+
+	&PluginApiImpl::pause
 };
 
 DCUtils PluginApiImpl::dcUtils = {
@@ -543,6 +545,14 @@
 	reinterpret_cast<QueueItem*>(qi->object)->setPriority(static_cast<QueueItem::Priority>(priority));
 }
 
+Bool PluginApiImpl::pause(QueueDataPtr qi) {
+	auto item = reinterpret_cast<QueueItem*>(qi->object);
+	bool paused = (item->getPriority() == QueueItem::PAUSED);
+
+	item->setPriority(paused ? QueueItem::DEFAULT : QueueItem::PAUSED);
+	return (!paused ? True : False);
+}
+
 QueueDataPtr PluginApiImpl::copyData(const QueueDataPtr qi) {
 	QueueDataPtr copy = (QueueDataPtr)malloc(sizeof(QueueData));
 	memcpy(copy, qi, sizeof(QueueData));

=== modified file 'dcpp/PluginApiImpl.h'
--- dcpp/PluginApiImpl.h	2012-10-29 18:19:03 +0000
+++ dcpp/PluginApiImpl.h	2012-11-01 22:13:45 +0000
@@ -94,7 +94,7 @@
 	static void DCAPI addTag(TagDataPtr hTags, size_t start, size_t end, const char* id, const char* attributes);
 
 	// Functions for DCUI - the host has to define these
-	static void DCAPI addCommand(const char* name, void (*command)());
+	static void DCAPI addCommand(const char* name, DCCommandFunc command);
 	static void DCAPI removeCommand(const char* name);
 
 	static void DCAPI playSound(const char* path);
@@ -107,6 +107,8 @@
 
 	static void DCAPI setPriority(QueueDataPtr qi, QueuePrio priority);
 
+	static Bool DCAPI pause(QueueDataPtr qi);
+
 	// Functions for DCHub
 	static HubDataPtr DCAPI addHub(const char* url, const char* nick, const char* password);
 	static HubDataPtr DCAPI findHub(const char* url);

=== modified file 'dcpp/PluginDefs.h'
--- dcpp/PluginDefs.h	2012-10-29 18:19:03 +0000
+++ dcpp/PluginDefs.h	2012-11-01 22:13:45 +0000
@@ -63,7 +63,7 @@
 #define DCINTF_DCPP_HUBS_VER		1
 
 #define DCINTF_DCPP_QUEUE			"dcpp.queue.DCQueue"		/* Download Queue */
-#define DCINTF_DCPP_QUEUE_VER		1
+#define DCINTF_DCPP_QUEUE_VER		2
 
 #define DCINTF_DCPP_UTILS			"dcpp.utils.DCUtils"		/* Utility and convenience functions */
 #define DCINTF_DCPP_UTILS_VER		1
@@ -144,8 +144,7 @@
 
 typedef enum tagQueuePrio {
 	PRIO_DEFAULT = -1,
-	PRIO_PAUSED = 0,
-	PRIO_LOWEST,
+	PRIO_LOWEST = 1,
 	PRIO_LOW,
 	PRIO_NORMAL,
 	PRIO_HIGH,
@@ -390,6 +389,9 @@
 
 	QueueDataPtr	(DCAPI *copy)					(const QueueDataPtr hItem);
 	void			(DCAPI *release)				(QueueDataPtr hCopy);
+
+	/* Version 2 functions */
+	Bool			(DCAPI *pause)					(QueueDataPtr hItem);
 } DCQueue, *DCQueuePtr;
 
 /* Utility and convenience functions */
@@ -416,11 +418,13 @@
 } DCTagger, *DCTaggerPtr;
 
 /* User interface */
+typedef void (DCAPI* DCCommandFunc)		();
+
 typedef struct DCUI {
 	/* User interface API version */
 	uint32_t apiVersion;
 
-	void		(DCAPI *add_command)				(const char* name, void (*command)());
+	void		(DCAPI *add_command)				(const char* name, DCCommandFunc command);
 	void		(DCAPI *remove_command)				(const char* name);
 
 	void		(DCAPI *play_sound)					(const char* path);

=== modified file 'win32/PluginApiImpl.cpp'
--- win32/PluginApiImpl.cpp	2012-10-29 18:19:03 +0000
+++ win32/PluginApiImpl.cpp	2012-11-01 22:13:45 +0000
@@ -30,7 +30,7 @@
 namespace dcpp {
 
 // Functions for DCUI
-void PluginApiImpl::addCommand(const char* name, void (*command)()) {
+void PluginApiImpl::addCommand(const char* name, DCCommandFunc command) {
 	MainWindow::addPluginCommand(Text::toT(name), command);
 }