← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3132: update the test plugin

 

------------------------------------------------------------
revno: 3132
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sun 2012-11-11 18:07:47 +0100
message:
  update the test plugin
modified:
  plugins/Test/Plugin.cpp
  plugins/Test/Plugin.h
  plugins/Test/pluginsdk.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 'plugins/Test/Plugin.cpp'
--- plugins/Test/Plugin.cpp	2012-11-08 12:41:54 +0000
+++ plugins/Test/Plugin.cpp	2012-11-11 17:07:47 +0000
@@ -21,34 +21,36 @@
 
 #include <pluginsdk/Config.h>
 #include <pluginsdk/Core.h>
+#include <pluginsdk/Hooks.h>
 #include <pluginsdk/Logger.h>
+#include <pluginsdk/Tagger.h>
+#include <pluginsdk/UI.h>
 #include <pluginsdk/Util.h>
 
 using dcapi::Config;
 using dcapi::Core;
+using dcapi::Hooks;
 using dcapi::Logger;
+using dcapi::Tagger;
+using dcapi::UI;
 using dcapi::Util;
 
-Plugin* Plugin::instance = nullptr;
-
 Plugin::Plugin() {
 }
 
 Plugin::~Plugin() {
-	for(auto& i: events)
-		hooks->release_hook(i.second);
-	events.clear();
+	Hooks::clear();
 }
 
 Bool DCAPI Plugin::main(PluginState state, DCCorePtr core, dcptr_t) {
+	static Plugin* instance;
+
 	switch(state) {
 	case ON_INSTALL:
 	case ON_LOAD:
 		{
-			Bool res = True;
 			instance = new Plugin();
-			instance->onLoad(core, (state == ON_INSTALL), res);
-			return res;
+			return instance->onLoad(core, state == ON_INSTALL) ? True : False;
 		}
 
 	case ON_UNINSTALL:
@@ -66,17 +68,11 @@
 	}
 }
 
-void Plugin::onLoad(DCCorePtr core, bool install, Bool& loadRes) {
-	hooks = reinterpret_cast<DCHooksPtr>(core->query_interface(DCINTF_HOOKS, DCINTF_HOOKS_VER));
-
-	tagger = reinterpret_cast<DCTaggerPtr>(core->query_interface(DCINTF_DCPP_TAGGER, DCINTF_DCPP_TAGGER_VER));
-	ui = reinterpret_cast<DCUIPtr>(core->query_interface(DCINTF_DCPP_UI, DCINTF_DCPP_UI_VER));
-
-	if(!Util::init(core) || !Config::init(core) || !Logger::init(core) || !hooks || !tagger || !ui) {
-		loadRes = False;
-		return;
-	}
+bool Plugin::onLoad(DCCorePtr core, bool install) {
 	Core::init(core);
+	if(!Config::init() || !Hooks::init() || !Logger::init() || !Tagger::init() || !UI::init() || !Util::init()) {
+		return false;
+	}
 
 	if(install) {
 		Logger::log("The test plugin has been installed.");
@@ -84,23 +80,22 @@
 
 	Logger::log("Test plugin loaded, watch out!");
 
-	events[HOOK_TIMER_SECOND] = hooks->bind_hook(HOOK_TIMER_SECOND, [](dcptr_t, dcptr_t pData, dcptr_t, Bool*) {
-		return instance->onSecond(*reinterpret_cast<uint64_t*>(pData)); }, nullptr);
+	Hooks::Timer::onSecond([this](uint64_t tick, bool&) { return onSecond(tick); });
+	Hooks::UI::onChatTags([this](UserDataPtr, TagDataPtr tags, bool&) { return onUiChatTags(tags); });
 
-	events[HOOK_UI_CHAT_TAGS] = hooks->bind_hook(HOOK_UI_CHAT_TAGS, [](dcptr_t, dcptr_t pData, dcptr_t, Bool*) {
-		return instance->onUiChatTags(reinterpret_cast<TagDataPtr>(pData)); }, nullptr);
+	return true;
 }
 
-Bool Plugin::onSecond(uint64_t tick) {
+bool Plugin::onSecond(uint64_t tick) {
 	static uint64_t prevTick = 0;
 	if(tick - prevTick >= 10*1000) {
 		prevTick = tick;
-		ui->play_sound("Media\\tada.wav");
+		UI::handle()->play_sound("Media\\tada.wav");
 	}
-	return False;
+	return false;
 }
 
-Bool Plugin::onUiChatTags(TagDataPtr tags) {
+bool Plugin::onUiChatTags(TagDataPtr tags) {
 	// look for the pattern and make it bold.
 	const string pattern = "ABC DEF";
 
@@ -108,7 +103,7 @@
 	size_t start, end = 0;
 	while((start = text.find(pattern, end)) != string::npos) {
 		end = start + pattern.size();
-		tagger->add_tag(tags, start, end, "b", "");
+		Tagger::handle()->add_tag(tags, start, end, "b", "");
 	}
-	return False;
+	return false;
 }

=== modified file 'plugins/Test/Plugin.h'
--- plugins/Test/Plugin.h	2012-11-05 20:39:11 +0000
+++ plugins/Test/Plugin.h	2012-11-11 17:07:47 +0000
@@ -16,8 +16,8 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#ifndef PLUGINS_DEV_PLUGIN_H
-#define PLUGINS_DEV_PLUGIN_H
+#ifndef PLUGINS_TEST_PLUGIN_H
+#define PLUGINS_TEST_PLUGIN_H
 
 #include <map>
 
@@ -33,20 +33,9 @@
 	Plugin();
 	~Plugin();
 
-	void onLoad(DCCorePtr core, bool install, Bool& loadRes);
-	Bool onSecond(uint64_t tick);
-	Bool onUiChatTags(TagDataPtr tags);
-
-	map<string, subsHandle> events;
-
-	DCHooksPtr hooks;
-
-	DCTaggerPtr tagger;
-	DCUIPtr ui;
-
-	/** @todo switch to dcpp::Singleton when <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51494>
-	is fixed */
-	static Plugin* instance;
+	bool onLoad(DCCorePtr core, bool install);
+	bool onSecond(uint64_t tick);
+	bool onUiChatTags(TagDataPtr tags);
 };
 
 #endif

=== modified file 'plugins/Test/pluginsdk.cpp'
--- plugins/Test/pluginsdk.cpp	2012-11-04 19:15:24 +0000
+++ plugins/Test/pluginsdk.cpp	2012-11-11 17:07:47 +0000
@@ -5,5 +5,8 @@
 
 #include <pluginsdk/Core.cpp>
 #include <pluginsdk/Config.cpp>
+#include <pluginsdk/Hooks.cpp>
 #include <pluginsdk/Logger.cpp>
+#include <pluginsdk/Tagger.cpp>
+#include <pluginsdk/UI.cpp>
 #include <pluginsdk/Util.cpp>