linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #06207
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3094: make the test plugin play a sound every 10 sec
------------------------------------------------------------
revno: 3094
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Mon 2012-10-29 20:00:02 +0100
message:
make the test plugin play a sound every 10 sec
modified:
plugins/Test/Plugin.cpp
plugins/Test/Plugin.h
--
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-09-08 13:53:58 +0000
+++ plugins/Test/Plugin.cpp 2012-10-29 19:00:02 +0000
@@ -20,6 +20,8 @@
#include "Plugin.h"
#include "Util.h"
+Plugin* Plugin::instance = nullptr;
+
Plugin::Plugin() {
}
@@ -35,15 +37,16 @@
case ON_LOAD:
{
Bool res = True;
- newInstance();
- getInstance()->onLoad(core, (state == ON_INSTALL), res);
+ instance = new Plugin();
+ instance->onLoad(core, (state == ON_INSTALL), res);
return res;
}
case ON_UNINSTALL:
case ON_UNLOAD:
{
- deleteInstance();
+ delete instance;
+ instance = nullptr;
return True;
}
@@ -61,10 +64,10 @@
auto utils = reinterpret_cast<DCUtilsPtr>(core->query_interface(DCINTF_DCPP_UTILS, DCINTF_DCPP_UTILS_VER));
auto config = reinterpret_cast<DCConfigPtr>(core->query_interface(DCINTF_CONFIG, DCINTF_CONFIG_VER));
auto logger = reinterpret_cast<DCLogPtr>(core->query_interface(DCINTF_LOGGING, DCINTF_LOGGING_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(!utils || !config || !logger || !tagger) {
+ if(!utils || !config || !logger || !tagger || !ui) {
loadRes = False;
return;
}
@@ -80,7 +83,20 @@
return;
}*/
- events[HOOK_UI_CHAT_TAGS] = hooks->bind_hook(HOOK_UI_CHAT_TAGS, &uiChatTags, 0);
+ 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);
+
+ 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);
+}
+
+Bool Plugin::onSecond(uint64_t tick) {
+ static uint64_t prevTick = 0;
+ if(tick - prevTick >= 10*1000) {
+ prevTick = tick;
+ ui->play_sound("Media\\tada.wav");
+ }
+ return False;
}
Bool Plugin::onUiChatTags(TagDataPtr tags) {
=== modified file 'plugins/Test/Plugin.h'
--- plugins/Test/Plugin.h 2012-09-08 13:53:58 +0000
+++ plugins/Test/Plugin.h 2012-10-29 19:00:02 +0000
@@ -19,38 +19,35 @@
#ifndef PLUGINS_DEV_PLUGIN_H
#define PLUGINS_DEV_PLUGIN_H
-#include <Singleton.h>
-
#include <map>
using std::map;
using std::string;
-class Plugin : public dcpp::Singleton<Plugin>
+class Plugin
{
public:
static Bool DCAPI main(PluginState state, DCCorePtr core, dcptr_t);
private:
- friend class dcpp::Singleton<Plugin>;
-
Plugin();
~Plugin();
void onLoad(DCCorePtr core, bool install, Bool& loadRes);
+ Bool onSecond(uint64_t tick);
Bool onUiChatTags(TagDataPtr tags);
- // Event wrappers
- static Bool DCAPI uiChatTags(dcptr_t /*pObject*/, dcptr_t pData, dcptr_t, Bool* /*bBreak*/) {
- return getInstance()->onUiChatTags(reinterpret_cast<TagDataPtr>(pData));
- }
-
map<string, subsHandle> events;
DCCorePtr dcpp;
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;
};
#endif