diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-06-08 22:17:41 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-06-08 22:17:41 +0000 |
commit | 76c78477a8d4fa8b1a56049ffde6b36f6205b13d (patch) | |
tree | 0567e30e783dfa4824fbe20c45912dc213dd53ea /plugins/CyrTranslit/MirandaContact.h | |
parent | 7e61d4900d9b99958f863cd2f56fc3cd4e800600 (diff) |
CyrTranslit added
git-svn-id: http://svn.miranda-ng.org/main/trunk@368 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/CyrTranslit/MirandaContact.h')
-rw-r--r-- | plugins/CyrTranslit/MirandaContact.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/plugins/CyrTranslit/MirandaContact.h b/plugins/CyrTranslit/MirandaContact.h new file mode 100644 index 0000000000..4c0106e972 --- /dev/null +++ b/plugins/CyrTranslit/MirandaContact.h @@ -0,0 +1,123 @@ +/**
+ * CyrTranslit: the Cyrillic transliteration plug-in for Miranda IM.
+ * Copyright 2005 Ivan Krechetov.
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#pragma once
+
+#include "plugin.h"
+
+namespace CyrTranslit
+{
+
+/**
+ * The Miranda IM contact abstraction in respect to the transliteration process.
+ */
+class MirandaContact
+{
+public:
+ /**
+ * This message must be sent on Miranda startup.
+ */
+ static void initialize();
+
+ /**
+ * A factory method which instantiates new MirandaContact objects, loading
+ * its data from the Miranda database.
+ *
+ * @param hContact The handle of the contact object to be instantiated.
+ * @return The Miranda IM contact having the passed handle.
+ */
+ static MirandaContact getContact(HANDLE hContact);
+
+ /**
+ * Saves this object's data to the persistent storage -- the Miranda
+ * database. This information may be retreived later on by means of
+ * getContact() factory method invocation.
+ */
+ void save() const;
+
+ /**
+ * @return True only if the Cyrillic transliteration is on for this contact.
+ */
+ bool shouldTransliterateOutgoingMessages() const;
+
+ ~MirandaContact();
+
+private:
+ static const std::string SETTINGS_MODULE;
+ static const std::string SETTING_SHOULD_TRANSLITERATE;
+
+ static char *MENU_ITEM_TEXT;
+
+ MirandaContact();
+
+ /**
+ * Must be called on Miranda start-up to generate the transliteration
+ * command menu items for all the contacts (a contact-specific menu).
+ */
+ static void generateMenuItemsForAllContacts();
+
+ static void activateTransliterationProtocolForSubscribedContacts();
+
+ /**
+ * This is a callback function for the transliteration command menu item.
+ * This menu item is contact-specific.
+ *
+ * @param wParam The HANDLE of the contact that owns the activated menu
+ * item.
+ * @param lParam hwndContactList
+ * @return Always returns 0.
+ */
+ static int onMenuCommandTransliterate(WPARAM wParam, LPARAM lParam);
+
+ /**
+ * This is a service name to bind the onMenuCommandTransliterate() method to
+ * within the Miranda IM framework.
+ */
+ static char *MENU_COMMAND_CALLBACK_SERVICE;
+
+ /**
+ * Stores the handle to a single user menu item shared by all the contacts.
+ * This menu item has a contact-specific state -- checked or unchecked, as
+ * far as for some contacts transliteration may be on, and for others it may
+ * be off.
+ *
+ * MirandaContact class makes the necessary update just before a menu is
+ * shown for a contact: it checks or unchecks the transliteration menu item.
+ *
+ * When the transliteration menu item is activated by a user, the
+ * transliteration setting (on or off) is inverted for the contact owing the
+ * menu.
+ */
+ static HANDLE hTransliterateCmdMenuItem;
+
+ /**
+ * @param wParam The HANDLE of the contact that owns the menu item being
+ * built.
+ * @param lParam = 0.
+ * @return Always returns 0.
+ */
+ static int onPreBuildContactMenu(WPARAM wParam, LPARAM lParam);
+
+ static void fillInMenuItem(CLISTMENUITEM &mi);
+
+ HANDLE handle;
+ bool transliterateOutgoingMessages;
+};
+
+}
\ No newline at end of file |