summaryrefslogtreecommitdiff
path: root/protocols/Facebook/src
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2019-06-14 12:57:54 +0300
committerGeorge Hazan <ghazan@miranda.im>2019-06-14 12:57:54 +0300
commit313ab14bd5e61167b871cfada90567c156fa65eb (patch)
treec105467871f138f3ab046db102d47557d75b4705 /protocols/Facebook/src
parent339c8817ecda334f3f7af41df07a6e7bdce8824a (diff)
new Facebook plugin: very first version
Diffstat (limited to 'protocols/Facebook/src')
-rw-r--r--protocols/Facebook/src/db.h97
-rw-r--r--protocols/Facebook/src/main.cpp72
-rw-r--r--protocols/Facebook/src/proto.cpp35
-rw-r--r--protocols/Facebook/src/proto.h41
-rw-r--r--protocols/Facebook/src/resource.h5
-rw-r--r--protocols/Facebook/src/stdafx.cxx18
-rw-r--r--protocols/Facebook/src/stdafx.h56
-rw-r--r--protocols/Facebook/src/version.h13
8 files changed, 337 insertions, 0 deletions
diff --git a/protocols/Facebook/src/db.h b/protocols/Facebook/src/db.h
new file mode 100644
index 0000000000..6c79ded525
--- /dev/null
+++ b/protocols/Facebook/src/db.h
@@ -0,0 +1,97 @@
+/*
+
+Facebook plugin for Miranda Instant Messenger
+_____________________________________________
+
+Copyright © 2009-11 Michal Zelinka, 2011-17 Robert Pösel, 2017-19 Miranda NG team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#pragma once
+
+#define MODULENAME "Facebook"
+
+// Contact DB keys
+#define DBKEY_LOGIN "Email"
+#define DBKEY_ID "ID"
+#define DBKEY_TID "ThreadID"
+#define DBKEY_FIRST_NAME "FirstName"
+#define DBKEY_SECOND_NAME "SecondName"
+#define DBKEY_LAST_NAME "LastName"
+#define DBKEY_NICK "Nick"
+#define DBKEY_USERNAME "Username"
+#define DBKEY_PASS "Password"
+#define DBKEY_DEVICE_ID "DeviceID"
+#define DBKEY_AVATAR "Avatar"
+#define DBKEY_DELETED "DeletedTS"
+#define DBKEY_CONTACT_TYPE "ContactType"
+#define DBKEY_MESSAGE_ID "LastMessageId"
+#define DBKEY_MESSAGE_READ "LastMsgReadTime"
+#define DBKEY_MESSAGE_READERS "MessageReaders"
+
+// Thread specific DB keys
+#define DBKEY_CHAT_CAN_REPLY "CanReply"
+#define DBKEY_CHAT_READ_ONLY "ReadOnly"
+#define DBKEY_CHAT_IS_ARCHIVED "IsArchived"
+#define DBKEY_CHAT_IS_SUBSCRIBED "IsSubscribed"
+
+// Contact and account DB keys
+#define DBKEY_KEEP_UNREAD "KeepUnread" // (byte) 1 = don't mark messages as read on server (works globally or per contact)
+
+// Account DB keys
+#define DBKEY_DEF_GROUP "DefaultGroup"
+#define DBKEY_SET_MIRANDA_STATUS "SetMirandaStatus"
+#define DBKEY_SYSTRAY_NOTIFY "UseSystrayNotify"
+#define DBKEY_DISABLE_STATUS_NOTIFY "DisableStatusNotify"
+#define DBKEY_BIG_AVATARS "UseBigAvatars"
+#define DBKEY_DISCONNECT_CHAT "DisconnectChatEnable"
+#define DBKEY_MAP_STATUSES "MapStatuses"
+#define DBKEY_CUSTOM_SMILEYS "CustomSmileys"
+#define DBKEY_SERVER_TYPE "ServerType"
+#define DBKEY_PRIVACY_TYPE "PrivacyType"
+#define DBKEY_PLACE "Place"
+#define DBKEY_LAST_WALL "LastWall"
+#define DBKEY_LOAD_PAGES "LoadPages"
+#define DBKEY_FILTER_ADS "FilterAds"
+#define DBKEY_LOGON_TS "LogonTS"
+#define DBKEY_LAST_ACTION_TS "LastActionTS"
+#define DBKEY_MESSAGES_ON_OPEN "MessagesOnOpen"
+#define DBKEY_MESSAGES_ON_OPEN_COUNT "MessagesOnOpenCount"
+#define DBKEY_HIDE_CHATS "HideChats"
+#define DBKEY_ENABLE_CHATS "EnableChat"
+#define DBKEY_JOIN_EXISTING_CHATS "JoinExistingChats"
+#define DBKEY_NOTIFICATIONS_CHATROOM "NotificationsChatroom"
+#define DBKEY_NAME_AS_NICK "NameAsNick"
+#define DBKEY_LOAD_ALL_CONTACTS "LoadAllContacts"
+#define DBKEY_PAGES_ALWAYS_ONLINE "PagesAlwaysOnline"
+#define DBKEY_TYPING_WHEN_INVISIBLE "TypingWhenInvisible"
+
+// Account DB keys - notifications
+#define DBKEY_EVENT_NOTIFICATIONS_ENABLE "EventNotificationsEnable"
+#define DBKEY_EVENT_FEEDS_ENABLE "EventFeedsEnable"
+#define DBKEY_EVENT_FRIENDSHIP_ENABLE "EventFriendshipEnable"
+#define DBKEY_EVENT_TICKER_ENABLE "EventTickerEnable"
+#define DBKEY_EVENT_ON_THIS_DAY_ENABLE "EventMemoriesEnable"
+#define DBKEY_FEED_TYPE "EventFeedsType"
+
+// Hidden account DB keys (can't be changed through GUI)
+#define DBKEY_POLL_RATE "PollRate" // [HIDDEN] - (byte)
+#define DBKEY_TIMEOUTS_LIMIT "TimeoutsLimit" // [HIDDEN] - (byte)
+#define DBKEY_LOCALE "Locale" // [HIDDEN] - (string) en_US, cs_CZ, etc. (requires restart to apply)
+#define DBKEY_NASEEMS_SPAM_MODE "NaseemsSpamMode" // [HIDDEN] - (byte) 1 = don't load messages sent from other instances (e.g., browser) - known as "Naseem's spam mode"
+#define DBKEY_OPEN_URL_BROWSER "OpenUrlBrowser" // [HIDDEN] - (unicode) = absolute path to browser to open url links with
+#define DBKEY_SEND_MESSAGE_TRIES "SendMessageTries" // [HIDDEN] - (byte) = number of tries to send message, default=1, min=1, max=5
+#define DBKEY_PAGE_PREFIX "PagePrefix" // [HIDDEN] - (unicode) = prefix for name of "page" contacts (requires restart to apply), default is emoji :page_facing_up: (written as unicode char)
diff --git a/protocols/Facebook/src/main.cpp b/protocols/Facebook/src/main.cpp
new file mode 100644
index 0000000000..7a8b8aa641
--- /dev/null
+++ b/protocols/Facebook/src/main.cpp
@@ -0,0 +1,72 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "stdafx.h"
+#include "version.h"
+
+CMPlugin g_plugin;
+
+bool g_bMessageState;
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+PLUGININFOEX pluginInfoEx = {
+ sizeof(PLUGININFOEX),
+ __PLUGIN_NAME,
+ PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
+ __DESCRIPTION,
+ __AUTHOR,
+ __COPYRIGHT,
+ __AUTHORWEB,
+ UNICODE_AWARE,
+ // {86033E58-A1E3-43AD-AE8E-305E15E72A91}
+ { 0xee0543fb, 0x711d, 0x4ac8, { 0xb6, 0xc0, 0x1d, 0xda, 0x48, 0x38, 0x10, 0x7e }}
+};
+
+CMPlugin::CMPlugin() :
+ ACCPROTOPLUGIN<FacebookProto>(MODULENAME, pluginInfoEx)
+{
+ SetUniqueId(DBKEY_ID);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Interface information
+
+extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST };
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Load
+
+static int OnModuleLoaded(WPARAM, LPARAM)
+{
+ g_bMessageState = ServiceExists(MS_MESSAGESTATE_UPDATE) != 0;
+ return 0;
+}
+
+int CMPlugin::Load()
+{
+ HookEvent(ME_SYSTEM_MODULELOAD, OnModuleLoaded);
+ HookEvent(ME_SYSTEM_MODULEUNLOAD, OnModuleLoaded);
+ HookEvent(ME_SYSTEM_MODULESLOADED, OnModuleLoaded);
+
+ // Initialize random generator (used only as fallback in utils)
+ srand(::time(0));
+ return 0;
+}
diff --git a/protocols/Facebook/src/proto.cpp b/protocols/Facebook/src/proto.cpp
new file mode 100644
index 0000000000..63860bc617
--- /dev/null
+++ b/protocols/Facebook/src/proto.cpp
@@ -0,0 +1,35 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "stdafx.h"
+
+FacebookProto::FacebookProto(const char *proto_name, const wchar_t *username) :
+ PROTO<FacebookProto>(proto_name, username)
+{
+
+}
+
+FacebookProto::~FacebookProto()
+{
+}
+
+void FacebookProto::OnModulesLoaded()
+{
+}
diff --git a/protocols/Facebook/src/proto.h b/protocols/Facebook/src/proto.h
new file mode 100644
index 0000000000..6d5bf0c421
--- /dev/null
+++ b/protocols/Facebook/src/proto.h
@@ -0,0 +1,41 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#pragma once
+
+class FacebookProto : public PROTO<FacebookProto>
+{
+
+public:
+ FacebookProto(const char *proto_name, const wchar_t *username);
+ ~FacebookProto();
+
+ ////////////////////////////////////////////////////////////////////////////////////////
+ // PROTO_INTERFACE
+
+ void OnModulesLoaded() override;
+};
+
+struct CMPlugin : public ACCPROTOPLUGIN<FacebookProto>
+{
+ CMPlugin();
+
+ int Load() override;
+};
diff --git a/protocols/Facebook/src/resource.h b/protocols/Facebook/src/resource.h
new file mode 100644
index 0000000000..558effecf5
--- /dev/null
+++ b/protocols/Facebook/src/resource.h
@@ -0,0 +1,5 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by D:\Development\Miranda NG\Miranda NG\protocols\FacebookRM\res\facebook.rc
+//
+#define IDI_FACEBOOK 101
diff --git a/protocols/Facebook/src/stdafx.cxx b/protocols/Facebook/src/stdafx.cxx
new file mode 100644
index 0000000000..66afad80f1
--- /dev/null
+++ b/protocols/Facebook/src/stdafx.cxx
@@ -0,0 +1,18 @@
+/*
+Copyright (C) 2012-19 Miranda NG team (https://miranda-ng.org)
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation version 2
+of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
diff --git a/protocols/Facebook/src/stdafx.h b/protocols/Facebook/src/stdafx.h
new file mode 100644
index 0000000000..0fe4dc69ce
--- /dev/null
+++ b/protocols/Facebook/src/stdafx.h
@@ -0,0 +1,56 @@
+/*
+
+Facebook plugin for Miranda NG
+Copyright © 2019 Miranda NG team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#pragma once
+
+#include <windows.h>
+#include <time.h>
+
+#include <win2k.h>
+#include <newpluginapi.h>
+#include <m_avatars.h>
+#include <m_chat.h>
+#include <m_clistint.h>
+#include <m_database.h>
+#include <m_idle.h>
+#include <m_ignore.h>
+#include <m_langpack.h>
+#include <m_message.h>
+#include <m_netlib.h>
+#include <m_options.h>
+#include <m_popup.h>
+#include <m_protosvc.h>
+#include <m_protoint.h>
+#include <m_skin.h>
+#include <m_icolib.h>
+#include <m_hotkeys.h>
+#include <m_folders.h>
+#include <m_smileyadd.h>
+#include <m_toptoolbar.h>
+#include <m_json.h>
+#include <m_imgsrvc.h>
+#include <m_http.h>
+#include <m_messagestate.h>
+#include <m_gui.h>
+
+#include "db.h"
+#include "proto.h"
+
+extern bool g_bMessageState;
diff --git a/protocols/Facebook/src/version.h b/protocols/Facebook/src/version.h
new file mode 100644
index 0000000000..d9f70ae508
--- /dev/null
+++ b/protocols/Facebook/src/version.h
@@ -0,0 +1,13 @@
+#define __MAJOR_VERSION 0
+#define __MINOR_VERSION 0
+#define __RELEASE_NUM 0
+#define __BUILD_NUM 1
+
+#include <stdver.h>
+
+#define __PLUGIN_NAME "Facebook"
+#define __FILENAME "Facebook.dll"
+#define __DESCRIPTION "Facebook protocol support for Miranda NG."
+#define __AUTHOR "Miranda NG Team"
+#define __AUTHORWEB "https://miranda-ng.org/p/Facebook/"
+#define __COPYRIGHT "© 2019 Miranda NG team"