Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2017-06-15 11:11:44 +0300
committerEion Robb <eion@robbmob.com>2017-06-15 11:11:44 +0300
commit4ed9b14306ef101a82f72bfa464d959632f5f5b2 (patch)
tree8a3655d7bcd1cf26eb2a30e9250c6a17bd5ac211
parentaa9ddd71b7c1f2d3c596e2e3b77f389c08bb2f38 (diff)
Remove the old skype4pidgin plugin from existence
Too confusing to keep around!
-rw-r--r--CHANGELOG.txt417
-rw-r--r--COPYING.txt674
-rw-r--r--Info.plist28
-rw-r--r--Makefile121
-rw-r--r--PurpleSkypeAccount.h17
-rw-r--r--PurpleSkypeAccount.m320
-rw-r--r--PurpleSkypeAccountView.nib/classes.nib32
-rw-r--r--PurpleSkypeAccountView.nib/info.nib20
-rw-r--r--PurpleSkypeAccountView.nib/keyedobjects.nibbin3865 -> 0 bytes
-rw-r--r--PurpleSkypeAccountViewController.h19
-rw-r--r--PurpleSkypeAccountViewController.m53
-rw-r--r--PurpleSkypeService.h14
-rw-r--r--PurpleSkypeService.m180
-rw-r--r--README.md94
-rw-r--r--SkypeJoinChatView.nib/classes.nib38
-rw-r--r--SkypeJoinChatView.nib/info.nib20
-rw-r--r--SkypeJoinChatView.nib/keyedobjects.nibbin5324 -> 0 bytes
-rw-r--r--SkypeJoinChatViewController.h18
-rw-r--r--SkypeJoinChatViewController.m117
-rw-r--r--SkypePlugin.h14
-rw-r--r--SkypePlugin.m93
-rw-r--r--SkypePlugin.xcodeproj/mymacspace.mode11446
-rw-r--r--SkypePlugin.xcodeproj/mymacspace.mode1v31570
-rw-r--r--SkypePlugin.xcodeproj/mymacspace.pbxuser1685
-rw-r--r--SkypePlugin.xcodeproj/project.pbxproj602
-rw-r--r--SkypePlugin_Prefix.pch7
-rw-r--r--TODO.txt6
-rw-r--r--debug.c124
-rw-r--r--libskype.c3599
-rw-r--r--libskypekit/libskypekit.cpp1845
-rw-r--r--libskypekit/libskypekit.h361
-rw-r--r--po/cs.po234
-rw-r--r--po/de.po219
-rw-r--r--po/en_AU.po229
-rw-r--r--po/es.po229
-rw-r--r--po/fr.po215
-rw-r--r--po/hu.po245
-rw-r--r--po/it.po220
-rw-r--r--po/ja.po223
-rw-r--r--po/mk.po239
-rw-r--r--po/nb.po219
-rw-r--r--po/pl.po229
-rw-r--r--po/pt.po202
-rw-r--r--po/pt_BR.po229
-rw-r--r--po/ru.po226
-rw-r--r--po/skype4pidgin.pot229
-rwxr-xr-xskype4pidgin.nsi131
-rw-r--r--skype_events.c1467
-rw-r--r--skype_messaging.c259
-rw-r--r--skype_messaging_carbon.c263
-rwxr-xr-xskype_messaging_carbon2.c424
-rw-r--r--skype_messaging_dbus.c227
-rw-r--r--skype_messaging_network.c226
-rw-r--r--skype_messaging_win32.c264
-rw-r--r--skype_messaging_x11.c392
-rw-r--r--theme698
56 files changed, 1 insertions, 21271 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
deleted file mode 100644
index 57cf7fc..0000000
--- a/CHANGELOG.txt
+++ /dev/null
@@ -1,417 +0,0 @@
-Changelog
-=========
-
-21 January 2010
----------------
-* Fixed memory leaks
-* New voice/video version for testing on Linux 32-bit (libskype-vv.so)
-* Fixed crash on connect bugs
-* Fixed users with newline characters in status looking weird in buddy list
-* Fix ping timeouts to improve DBus version support
-* Disable cleanlooks on Skype startup on Linux to reduce memory usage
-* Workaround for SkypeOut buddies showing as online
-* Fixes for the XML blob stuff in chats during calls
-* Allow reuse of Xvfb session using the SKYPEDISPLAY env var on Linux
-
-15 November 2009
-----------------
-* Finally fixed grouping on Adium plugin
-
-20 September 2009
------------------
-* Fixes the crash-on-startup problem in Linux
-* Authorisation messages no longer show as missed messages (working towards blocking auth spam)
-* 64-bit universal builds on OSX
-
-24 July 2009
-------------
-* Another crash-on-startup fixed on Win & OSX. And thoroughly tested this time :)
-
-23 July 2009
-------------
-* Fix for crash-on-startup in newest versions of Skype for Windows and OSX
-
-20 July 2009
-------------
-* Fixes for a crash when message received in a closed conversation
-
-22 June 2009
-------------
-* Fixes some annoying crashes
-* Shows buddy names in multi-user chats
-
-28 April 2009
--------------
-* Multi-user chat TLC, both Adium and Pidgin plugins
-* IM's turning into Multi-user chats don't mess up any more
-* 'Missed' messages downloaded
-
-4 April 2009
-------------
-* Fix buddy grouping and setting of status in Adium.
-
-1 April 2009
-------------
-* Last Adium version didn't work without Skype 2.8beta installed, has been fixed.
-
-27 March 2009
--------------
-* Important update for OSX users, workaround for bug in Skype which increased CPU load and missed messages
-* Removes debug info from system.log on OSX
-
-21 January 2009
----------------
-* Fixes statuses in Adium, can set your status to Invisible/DND/SkypeMe through Adium status menu
-
-4 January 2009
---------------
-* Fixed buddies not showing after suspend/disconnect in Adium plugin
-* Fixed SkypeOut buddies not showing as online in Adium & Pidgin plugins
-
-19 November 2008
-----------------
-* Fixed that really annoying assert crash on X11 systems
-* Some icons on buddys on buddylist
-* Improvements to chats which are saved on buddy list
-* Adium plugin brought up to date with the changes from Windows/Linux plugins
-
-20 October 2008
----------------
-* Fix for chats coming through as IM's
-* SMS sending, right-click on a SkypeOut buddy/buddy with a mobile to Send SMS
-* Mobile phone authorisation
-* SkypeMe status shows better in buddy list
-* Some file transfer fixes for Windows
-
-25 September 2008
------------------
-* Update for Adium 1.3
-* New location for files
-
-24 July 2008
-------------
-* Lots of speed improvements
-* Buddy icons for Linux and Mac
-* New No-Skype-Needed version of the plugin needs testing. Contact me if you're interested
-
-9 July 2008
------------
-* No more annoying error in the Windows installer
-* Added SkypeOut icons so that its easier to tell the difference between normal contacts and SkypeOut ones
-* Dbus plugin on Pidgin won't say that it's Finch anymore
-
-3 July 2008
------------
-* Portuguese translation thanks to Paulo Matos
-* Polish translation should be in .deb now
-
-2 July 2008
------------
-* Adium 1.2.x users will be able to use the latest version of the plugin
-* Please send me a message if languages other than English work for you in Adium menus
-
-1 July 2008
------------
-* Fix changing groups for buddies (sometimes crashed)
-* New messaging code should reduce battery usage
-* Adium plugin icons should line up properly now
-
-17 June 2008
-------------
-* Italian translation shouldn't be in Russian
-* Group stuff: changing groups of buddies in Pidgin changes them in Skype
-* Shouldn't come up with the "Skype not running" error message as often
-* A few other minor bug fixes
-* Oops, a big bugfix - if you already downloaded todays version, get it again
-
-5 June 2008
------------
-* Polish translation thanks to Jakub Chrzanowski
-
-16 May 2008
------------
-* Italian translation thanks to Roberto Agria
-* Russian translation thanks to Petr Vasilyev
-* Few minor tweaks to Pidgin plugin
-
-8 May 2008
-----------
-* Adium plugin updated to not crash on startup with 1.2.5
-* Pidgin plugin now has /kick commands and can handle users being kicked out of a multi-user chat
-
-28 April 2008
--------------
-* Adium plugin should hide Skype API window for languages other than English now
-* Hungarian translations in Windows and Linux versions
-
-24 April 2008
--------------
-* At long last, translations for Windows versions of the plugin
-* /me command is received properly now
-
-23 April 2008
--------------
-* Multi-user chats should be vastly better
-* Joining and leaving messages should show properly in multi-user chats
-* The /leave and /topic commands should work in multi-user chats
-* The title of the window is now something more useful than a random pile of characters
-
-21 April 2008
--------------
-* Fixed startup crash on Linux systems
-* Added D-Bus versions to .deb package
-* D-Bus and X11 versions can now run at the same time
-* Skype and SkypeOut groups aren't created at startup if not needed
-* Changed Pidgin version number required, so that the plugin runs on older copies of Pidgin again
-
-20 April 2008
--------------
-* Updated Adium plugin so that it hopefully doesn't freeze Adium while starting Skype
-
-12 April 2008
--------------
-* Windows installer updated to not create a Program Files directory now
-* German translations in Windows package
-
-26 March 2008
--------------
-* Added Japanese translations to Windows and Debian/Ubuntu packages. If you're interested in translating for your language, get in touch with me :)
-
-24 March 2008
--------------
-* Adium plugin should automatically allow API access (if access for assistive devices is enabled -- see http://images.apple.com/applescript/uiscripting/gfx/gui.03.jpg)
-
-11 March 2008
--------------
-* Adium plugin should work with the new 1.2.4b1 Adium Beta
-
-6 March 2008
-------------
-* Fixed the version numbering on the Debian/Ubuntu package
-* Typing notifications (to other plugin users)
-
-5 March 2008
-------------
-* Windows installer .exe available, installs protocol icons and emote theme too
-
-4 March 2008
-------------
-* Adium plugin updated
-
-3 March 2008
-------------
-* Finch plugin available to download since the dbus interface is now working
-* Different version numbering system on Debian/Ubuntu package
-* Fix for adding extra users to a multi-user chat
-
-2 March 2008
-------------
-* Fixed Pidgin crash when opening Pidgin's Debug Window
-* Skype options screen can be brought up by choosing the "Show Skype Options" menu in the accounts menu
-
-14 February 2008
-----------------
-* Debian/Ubuntu package has the skype emote theme in it now
-* File transfers now correctly show the direction of transfer
-
-13 February 2008
-----------------
-* RSS Feed for changelog up and running? http://myjobspace.co.nz/images/pidgin/rss.php
-
-12 February 2008
-----------------
-* Windows plugin has far better connection/disconnection system now
-
-11 February 2008
-----------------
-* Linux plugin stability and speed increases
-
-10 February 2008
-----------------
-* Incomming calls calls can be accepted from a pop-up box
-* Outgoing calls can be made to people not on your list through the accounts menu
-
-7 February 2008
----------------
-* Multi-user chats, at last!
-
-1 February 2008
----------------
-* Calls can now be made to offline contacts, allowing u to call peoples voicemail or call forwarding
-* Adium plugin has the correct extension again
-
-31 January 2008
----------------
-* Adium plugin will start Skype.app if it's not running
-
-30 January 2008
----------------
-* Windows version will start up Skype.exe now if it's not running
-* Debian/Ubuntu package no longer depends on skype package as this was causing problems
-* You can now check your Skype credit balance through the Accounts menu
-
-29 January 2008
----------------
-* Skype only automatically started if no other running copy of Skype is running
-
-22 January 2008
----------------
-* Fixed bug where buddy display name can get mangled if their mood/status message contains a newline character
-
-18 January 2008
----------------
-* Fixed an X11 error which caused pidgin to crash if skype hadn't been started during the current X session
-
-17 January 2008
----------------
-* Fixed bug where Pidgin/Adium might lock up if Skype is taking too long to respond
-
-16 January 2008
----------------
-* Cross-compile environment set up so there should be regular 64-bit linux builds
-* .deb package now for both i686 and amd64 architectures
-* .deb package now actually contains files and not just symlinks :)
-
-15 January 2008
----------------
-* File transfers even better handled
-* New Debian/Ubuntu package available
-* Adium plugin hacks Adium a little to make file transfers appear
-
-14 January 2008
----------------
-* Linux plugin shouldn't crash on disconnect/close now
-* Linux plugin should be a little faster
-* File transfers should be better handled
-* Skype mood text shouldn't have <!-- --> messages in it any more
-
-10 January 2008
----------------
-* Adium plugin doesn't hang when sending/receiving files
-* Fixed a potential infinite loop when a buddy updated their status message/mood text
-
-9 January 2008
---------------
-* Fixed a DoS if status message contains HTML tags
-
-8 January 2008
---------------
-* Adium plugin doesn't hang on startup
-* Adium plugin sets the right user name in the account options
-
-7 January 2008
---------------
-* Plugin works with Adium 1.2 (but not Adium 1.1 anymore)
-* Adium plugin doesn't crash on disconnect
-* Using newer Skype protocol version as a stepping-stone to multi-user chats (PROTOCOL 5)
-* SkypeOut contacts are added to a SkypeOut group instead of Skype
-
-9 December 2007
----------------
-* Buddy icons now refresh when people come online
-* Updated the Skype protocol icons (thanks Cube!)
-* Fixed buddies from being deleted if they had a particular status message
-
-4 December 2007
----------------
-* Users have their status messages updated correctly when coming from online if they have voicemail/call forwarding
-
-2 December 2007
----------------
-* Adium plugin doesn't lose messages
-* Adium doesn't crash on suspend with plugin running
-
-25 November 2007
-----------------
-* Skype doesn't annoy with messages when minimising to try
-* Setting your avatar icon works properly, and doesn't crash if you set an invalid filename
-
-22 November 2007
-----------------
-* Windows dll file now compiled from 2.1.1 Pidgin source, so it now works with PortablePidgin
-
-21 November 2007
-----------------
-* Adium plugin is now legally GPL - Skype.framework is no longer needed and I've created an open-source replacement.
-* Adium plugin has changes from Linux/Windows versions ported over.
-* Adium plugin crashes less at startup.
-* Adium plugin will Hide Skype instead of just minimising it.
-
-19 November 2007
-----------------
-* X11 fixes for Linux version. The main one stops the 100% CPU crash.
-* You can now search for new Skype users from the Account menu.
-* More X11 fixes for Linux version. This one should make the plugin more stable and not crash on computers with memory protection.
-
-18 November 2007
-----------------
-* The plugin can now check for updates to itself and Skype, through the Account menu.
-
-14 November 2007
-----------------
-* Reconnecting to the Skype process after restarting Skype doesn't cause a crash in Windows
-* The plugin can better detect if Skype closed in the background and disconnects (not perfect yet)
-
-13 November 2007
-----------------
-* Skype will now go offline when Pidgin/libpurple goes offline/unloads (set in account options)
-
-12 November 2007
-----------------
-* Removed a double free() error on Linux version
-* Messages can now be sent to people who appear Offline/Invisible on your contact list
-* SkypeOut buddies can now optionaly be Online (set in account options)
-
-11 November 2007
-----------------
-* Added more error handling on Linux version for dodgy X11 connections
-
-10 November 2007
-----------------
-* No crash when removing a buddy off your friends list on Skype
-* You can now add yourself to your own buddylist (won't show on Skype's friend list)
-
-6 November 2007
----------------
-* 'Last Online' information in 'Get Info' window now in a human readable format
-* Windows plugin doesn't crash on quit now
-
-5 November 2007
----------------
-* Adium plugin now handles UTF-8 characters properly. This time for real :)
-* Windows plugin needed a recompile to work with Pidgin 2.2.2 for some reason
-
-31 October 2007
----------------
-* Adium plugin should no longer need dependencies installed into weird places
-* Adium plugin handles UTF-8 characters properly
-* Adium plugin has a lot of debug error messages removed
-* Adium plugin now shows the usernames without having to turn off "Show User Icons"
-
-30 October 2007
----------------
-* File transfer progress show in Pidgin
-* Timezone information in "Get Info" windows is relative to UMT/GMT
-* Adium plugin and source are now in .zip files instead of .dmg's
-* Skype doesn't need to be started before starting Pidgin/Adium
-
-24 October 2007
----------------
-* Changelog has been started
-* Long messages (>254 characters) no longer freeze everything
-* Requests for contact authorisation should appear now
-* Changing the display name of a buddy in libpurple updates it in Skype
-* Multi-user chats can be initiated. No messages show up in the chat window yet.
-* Incoming event handling re-written to be more responsive
-
-17 October 2007
----------------
-* Buddies on libpurple/Skype contact lists are kept in sync with the contact list now
-* When Skype syncs messages with another instance of Skype, messages from yourself now appear in the correct IM window
-No messages show up in the chat window yet.
-* Incoming event handling re-written to be more responsive
-
-17 October 2007
----------------
-* Buddies on libpurple/Skype contact lists are kept in sync with the contact list now
-* When Skype syncs messages with another instance of Skype, messages from yourself now appear in the correct IM window
diff --git a/COPYING.txt b/COPYING.txt
deleted file mode 100644
index 94a9ed0..0000000
--- a/COPYING.txt
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- 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 3 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/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Info.plist b/Info.plist
deleted file mode 100644
index 97c7b66..0000000
--- a/Info.plist
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>AIMinimumAdiumVersionRequirement</key>
- <string>1.4</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>org.bigbrownchunx.skypeplugin</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleSignature</key>
- <string>AdIM</string>
- <key>CFBundleVersion</key>
- <string>1.1</string>
- <key>NSPrincipalClass</key>
- <string>SkypePlugin</string>
-</dict>
-</plist>
diff --git a/Makefile b/Makefile
deleted file mode 100644
index bb3b81e..0000000
--- a/Makefile
+++ /dev/null
@@ -1,121 +0,0 @@
-
-#Customisable stuff here
-LINUX32_COMPILER = i686-pc-linux-gnu-gcc
-LINUX64_COMPILER = x86_64-pc-linux-gnu-gcc
-WIN32_COMPILER = /usr/bin/i586-mingw32-gcc
-LINUX_ARM_COMPILER = arm-none-linux-gnueabi-gcc
-
-LIBPURPLE_CFLAGS = -I/usr/include/libpurple -DPURPLE_PLUGINS -DENABLE_NLS
-GLIB_CFLAGS = `pkg-config --cflags glib-2.0` -I/usr/include
-DBUS_CFLAGS = -DSKYPE_DBUS `pkg-config --cflags dbus-1`
-WIN32_DEV_DIR = /root/pidgin/win32-dev
-WIN32_PIDGIN_DIR = /root/pidgin/pidgin-2.6.1
-WIN32_CFLAGS = -DPURPLE_PLUGINS -DENABLE_NLS -I${WIN32_DEV_DIR}/gtk_2_0/include/glib-2.0 -I${WIN32_PIDGIN_DIR}/libpurple/win32 -I${WIN32_PIDGIN_DIR}/libpurple -I${WIN32_DEV_DIR}/gtk_2_0/include -I${WIN32_DEV_DIR}/gtk_2_0/include/glib-2.0 -I${WIN32_DEV_DIR}/gtk_2_0/lib/glib-2.0/include
-WIN32_LIBS = -L${WIN32_DEV_DIR}/gtk_2_0/lib -L${WIN32_PIDGIN_DIR}/libpurple -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -lintl -lpurple
-XUL_LIBS = -I/usr/lib/xulrunner/include xpcomModule.cpp -I/usr/include/nspr
-X11_LIBS = `pkg-config --libs x11`
-
-VV_CFLAGS = -I/usr/include/gstreamer-0.10 -DUSE_VV -I/usr/include/libxml2
-WIN32_VV_CFLAGS = -I${WIN32_DEV_DIR}/libxml2/include -I${WIN32_DEV_DIR}/gstreamer-0.10/include -I${WIN32_DEV_DIR}/gstreamer-0.10/include/gstreamer-0.10
-
-DEB_PACKAGE_DIR = /root/skypeplugin
-
-LOCALES = $(patsubst %.po, %.mo, $(wildcard po/*.po))
-
-#Standard stuff here
-.PHONY: all clean allarch install locales uninstall
-
-.DEPENDS: libskype.c skype_messaging.c skype_events.c debug.c
-
-allarch: skype4pidgin.deb skype4pidgin-installer.exe libskype_dbus.so libskype_dbus64.so libskypearm.so
-
-#By default, 'make' compiles X11 and DBus versions on local platform
-all: .DEPENDS skype_messaging_x11.c skype_messaging_dbus.c
- gcc ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -pipe libskype.c -o libskype.so -shared -fPIC -DPIC ${X11_LIBS}
- gcc ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -pipe libskype.c -o libskype_dbus.so -shared -fPIC -DPIC ${DBUS_CFLAGS}
-
-install: locales
- mkdir -p $(DESTDIR)/usr/share/pixmaps/pidgin/emotes/skype
- mkdir -p $(DESTDIR)/usr/share/pixmaps/pidgin/protocols
- mkdir -p $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/16
- mkdir -p $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/22
- mkdir -p $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/48
- mkdir -p $(DESTDIR)/usr/lib/purple-2
- install -m 664 theme $(DESTDIR)/usr/share/pixmaps/pidgin/emotes/skype/
- install -m 664 icons/16/skypeout.png icons/16/skype.png $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/16
- install -m 664 icons/22/skypeout.png icons/22/skype.png $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/22
- install -m 664 icons/48/skypeout.png icons/48/skype.png $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/48
- install -m 664 libskype_dbus.so libskype.so $(DESTDIR)/usr/lib/purple-2/
-
-uninstall:
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/emotes/skype
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/16/skypeout.png
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/16/skype.png
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/22/skypeout.png
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/22/skype.png
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/48/skypeout.png
- rm -rf $(DESTDIR)/usr/share/pixmaps/pidgin/protocols/48/skype.png
- rm -rf $(DESTDIR)/usr/lib/purple-2/libskype.so
- rm -rf $(DESTDIR)/usr/lib/purple-2/libskype_dbus.so
-
-clean:
- rm -f libskype.so libskype64.so libskype_dbus.so libskype_dbus64.so libskypearm.so libskype.dll skype4pidgin.deb skype4pidgin-installer.exe po/*.mo
-
-libskypenet.so: .DEPENDS skype_messaging_network.c
- ${LINUX32_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -march=athlon-xp -O2 -pipe libskype.c -o libskypenet.so -shared -fPIC -DPIC -DSKYPENET
-
-libskype.so: .DEPENDS skype_messaging_x11.c
- ${LINUX32_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -march=athlon-xp -pipe libskype.c -o libskype.so -shared -fPIC -DPIC
-
-libskype64.so: .DEPENDS skype_messaging_x11.c
- ${LINUX64_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -m32 -m64 -O2 -pipe libskype.c -o libskype64.so -shared -fPIC -DPIC -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
-
-libskypenet64.so: .DEPENDS skype_messaging_network.c
- ${LINUX64_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -m32 -m64 -O2 -pipe libskype.c -o libskypenet64.so -shared -fPIC -DPIC -DSKYPENET -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
-
-libskypearm.so: .DEPENDS skype_messaging_x11.c
- ${LINUX_ARM_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -O2 -pipe libskype.c -o libskypearm.so -shared -fPIC -DPIC
-
-libskype_dbus.so: .DEPENDS skype_messaging_dbus.c
- ${LINUX32_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -march=athlon-xp -pipe libskype.c -o libskype_dbus.so -shared -fPIC -DPIC ${DBUS_CFLAGS}
-
-libskype_dbus64.so: .DEPENDS skype_messaging_dbus.c
- ${LINUX64_COMPILER} ${LIBPURPLE_CFLAGS} -Wall -pthread ${GLIB_CFLAGS} -I. -g -m64 -pipe libskype.c -o libskype_dbus64.so -shared -fPIC -DPIC ${DBUS_CFLAGS} -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
-
-libskype.dll: .DEPENDS skype_messaging_win32.c
- ${WIN32_COMPILER} -Wall -I. -g -O2 -pipe libskype.c -o libskype.dll -shared -mno-cygwin ${WIN32_CFLAGS} ${WIN32_LIBS} -Wl,--strip-all
- upx libskype.dll
-
-libskype-xul.dll: .DEPENDS skype_messaging_win32.c
- ${WIN32_COMPILER} -Wall -I. -g -O2 -pipe libskype.c ${XUL_LIBS} -o libskype-xul.dll -shared -mno-cygwin ${WIN32_CFLAGS} ${WIN32_LIBS} -Wl,--strip-all
-
-libskypenet.dll: .DEPENDS skype_messaging_network.c
- ${WIN32_COMPILER} -Wall -I. -g -O2 -pipe libskype.c -o libskypenet.dll -shared -mno-cygwin ${WIN32_CFLAGS} ${WIN32_LIBS} -DSKYPENET -Wl,--strip-all
- upx libskypenet.dll
-
-libskype-debug.dll: .DEPENDS skype_messaging_win32.c
- ${WIN32_COMPILER} -Wall -I. -g -O2 -pipe libskype.c -o libskype-debug.dll -shared -mno-cygwin ${WIN32_CFLAGS} ${WIN32_LIBS}
-
-libskypenet-debug.dll: .DEPENDS skype_messaging_network.c
- ${WIN32_COMPILER} -Wall -I. -g -O2 -pipe libskype.c -o libskypenet-debug.dll -shared -mno-cygwin ${WIN32_CFLAGS} ${WIN32_LIBS} -DSKYPENET
-
-libskype.dylib: .DEPENDS skype_messaging_carbon.c skype_messaging_carbon2.c
- gcc -I/opt/local/include/libpurple -DPURPLE_PLUGINS -DENABLE_NLS -DHAVE_ZLIB -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/usr/include -dynamiclib -L/opt/local/lib -L/usr/lib -arch x86_64 -lpurple -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -lintl -lz -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -Wall -I. -g -O2 -pipe libskype.c -o libskype.dylib -shared -F/System/Library/Frameworks -framework Carbon -framework CoreFoundation
-
-po/%.mo: po/%.po
- msgfmt -cf -o $@ $<
-
-locales: ${LOCALES}
-
-skype4pidgin-installer.exe: libskype.dll locales
- date=`date +%d-%b-%Y` && sed "s/PRODUCT_VERSION \"[-a-z0-9A-Z]*\"/PRODUCT_VERSION \"$$date\"/" -i skype4pidgin.nsi
- echo "Making .exe package"
- makensis skype4pidgin.nsi > /dev/null
-
-skype4pidgin.deb: locales libskype.so libskype64.so libskype_dbus.so libskype_dbus64.so libskypearm.so
- rm ${DEB_PACKAGE_DIR}/usr/lib/purple-2/libskype*.so
- cp libskype.so libskype64.so libskype_dbus.so libskype_dbus64.so libskypearm.so ${DEB_PACKAGE_DIR}/usr/lib/purple-2/
- date=`date +%F` && sed "s/Version: [-a-z0-9A-Z]*/Version: $$date/" -i ${DEB_PACKAGE_DIR}/DEBIAN/control
- echo "Making .deb package"
- dpkg-deb --build ${DEB_PACKAGE_DIR} skype4pidgin.deb > /dev/null
-
diff --git a/PurpleSkypeAccount.h b/PurpleSkypeAccount.h
deleted file mode 100644
index b95acc0..0000000
--- a/PurpleSkypeAccount.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// PurpleSkypeAccount.h
-// Adium
-//
-
-#import <AdiumLibpurple/CBPurpleAccount.h>
-
-#define KEY_SKYPE_SHOW_SKYPEOUT @"Skype:Show SkypeOut Contacts"
-#define KEY_SKYPE_SYNC_OFFLINE @"Skype:Sync Offline Status"
-#define KEY_SKYPE_CHECK_FOR_UPDATES @"Skype:Check for Updates"
-#define KEY_SKYPE_AUTOSTART @"Skype:Auto Start"
-
-@interface PurpleSkypeAccount : CBPurpleAccount {
-
-}
-
-@end
diff --git a/PurpleSkypeAccount.m b/PurpleSkypeAccount.m
deleted file mode 100644
index 6373855..0000000
--- a/PurpleSkypeAccount.m
+++ /dev/null
@@ -1,320 +0,0 @@
-//
-// PurpleSkypeAccount.m
-// Adium
-//
-// Created by Eion Robb on 2007-10-14.
-//
-
-#import "PurpleSkypeAccount.h"
-#import <Adium/AIHTMLDecoder.h>
-#import <Adium/AIStatusControllerProtocol.h>
-#import <Adium/AIContentMessage.h>
-#import <Adium/AIContentControllerProtocol.h>
-#import <AdiumLibpurple/SLPurpleCocoaAdapter.h>
-#import <Adium/AISharedAdium.h>
-
-char *skype_status_text(PurpleBuddy *buddy);
-const char *skype_get_account_username(PurpleAccount *acct);
-
-@implementation PurpleSkypeAccount
-
-static SLPurpleCocoaAdapter *purpleThread = nil;
-
-- (SLPurpleCocoaAdapter *)purpleThread
-{
- //initialise libpurple in a safe way
- if (!purpleThread) {
- purpleThread = [[SLPurpleCocoaAdapter sharedInstance] retain];
- }
- return purpleThread;
-}
-
-- (const char*)protocolPlugin
-{
-#ifdef SKYPENET
- return "prpl-bigbrownchunx-skypenet";
-#else
- return "prpl-bigbrownchunx-skype";
-#endif
-}
-
-- (BOOL)disconnectOnFastUserSwitch
-{
- return YES;
-}
-
-- (NSAttributedString *)statusMessageForPurpleBuddy:(PurpleBuddy *)buddy
-{
- char *msg = (char *)skype_status_text(buddy);
- if (msg != NULL)
- {
- return [[NSAttributedString alloc] initWithString:[NSString stringWithUTF8String:msg]];
- }
- else
- return nil;
-}
-
-- (NSString *)statusNameForPurpleBuddy:(PurpleBuddy *)buddy
-{
- //printf("statusNameForPurpleBuddy cb\n");
- if (!buddy)
- return nil;
- PurplePresence *presence = purple_buddy_get_presence(buddy);
- if (!presence)
- return nil;
- PurpleStatus *status = purple_presence_get_active_status(presence);
- if (!status)
- return nil;
-
- const gchar *status_id = purple_status_get_id(status);
- //printf("Buddy %s has status_id %s\n", buddy->name, status_id);
- if(g_str_equal(status_id, "ONLINE"))
- return STATUS_NAME_AVAILABLE;
- if(g_str_equal(status_id, "SKYPEME"))
- return STATUS_NAME_FREE_FOR_CHAT;
- if(g_str_equal(status_id, "AWAY"))
- return STATUS_NAME_AWAY;
- if(g_str_equal(status_id, "NA"))
- return STATUS_NAME_NOT_AVAILABLE;
- if(g_str_equal(status_id, "DND"))
- return STATUS_NAME_DND;
- if(g_str_equal(status_id, "INVISIBLE"))
- return STATUS_NAME_INVISIBLE;
- if(g_str_equal(status_id, "OFFLINE"))
- return STATUS_NAME_OFFLINE;
-
- BOOL show_skypeout_online = [[self preferenceForKey:KEY_SKYPE_SHOW_SKYPEOUT group:GROUP_ACCOUNT_STATUS] boolValue];
- //not sure what to do with SkypeOut people?
- if(g_str_equal(status_id, "SKYPEOUT"))
- {
- if (show_skypeout_online)
- return STATUS_NAME_AVAILABLE;
- else
- return STATUS_NAME_OFFLINE;
- }
-
- return STATUS_NAME_OFFLINE;
-}
-
-- (const char *)purpleStatusIDForStatus:(AIStatus *)statusState
- arguments:(NSMutableDictionary *)arguments
-{
- if ([[statusState statusName] isEqualToString:STATUS_NAME_AVAILABLE])
- return "ONLINE";
- else if ([[statusState statusName] isEqualToString:STATUS_NAME_FREE_FOR_CHAT])
- return "SKYPEME";
- else if ([[statusState statusName] isEqualToString:STATUS_NAME_AWAY])
- return "AWAY";
- else if ([[statusState statusName] isEqualToString:STATUS_NAME_EXTENDED_AWAY])
- return "NA";
- else if ([[statusState statusName] isEqualToString:STATUS_NAME_DND])
- return "DND";
- else if ([[statusState statusName] isEqualToString:STATUS_NAME_INVISIBLE])
- return "INVISIBLE";
- else
- return "OFFLINE";
-}
-
-- (BOOL)connectivityBasedOnNetworkReachability
-{
- return NO;
-}
-
-- (NSString *)connectionStringForStep:(NSInteger)step
-{
- switch (step) {
- case 0:
- return @"Authorizing";
- break;
- case 1:
- return @"Initializing";
- break;
- case 2:
- return @"Silencing Skype";
- break;
- case 3:
- return @"Connected";
- break;
- }
-
- return nil;
-}
-
-- (NSString *)encodedAttributedString:(NSAttributedString *)inAttributedString forListObject:(AIListObject *)inListObject
-{
- /*if ([AIHTMLDecoder respondsToSelector:@selector(encodeHTML:headers:fontTags:includingColorTags:closeFontTags:styleTags:
- closeStyleTagsOnFontChange:encodeNonASCII:encodeSpaces:imagesPath:
- attachmentsAsText:onlyIncludeOutgoingImages:simpleTagsOnly:bodyBackground:
- allowJavascriptURLs:)])
- {*/
- NSString *temp = [AIHTMLDecoder encodeHTML:inAttributedString
- headers:YES
- fontTags:NO
- includingColorTags:NO
- closeFontTags:NO
- styleTags:NO
- closeStyleTagsOnFontChange:NO
- encodeNonASCII:NO
- encodeSpaces:NO
- imagesPath:nil
- attachmentsAsText:YES
- onlyIncludeOutgoingImages:NO
- simpleTagsOnly:YES
- bodyBackground:NO
- allowJavascriptURLs:NO];
- //printf("First encoder: %s\n", [temp cString]);
- return temp;
- /*} else {
- NSString *temp = [AIHTMLDecoder encodeHTML:inAttributedString
- headers:YES
- fontTags:NO
- includingColorTags:NO
- closeFontTags:NO
- styleTags:NO
- closeStyleTagsOnFontChange:NO
- encodeNonASCII:NO
- encodeSpaces:NO
- imagesPath:nil
- attachmentsAsText:YES
- onlyIncludeOutgoingImages:NO
- simpleTagsOnly:YES
- bodyBackground:NO];
- printf("Second encoder: %s\n", [temp cString]);
- return temp;
- }*/
- /*return [AIHTMLDecoder encodeHTML:inAttributedString
- encodeFullString:YES];*/
-}
-
-/*
-- (AIReconnectDelayType)shouldAttemptReconnectAfterDisconnectionError:(NSString **)disconnectionError
-{
- //AIReconnectDelayType shouldAttemptReconnect = [super shouldAttemptReconnectAfterDisconnectionError:disconnectionError];
-
- if (disconnectionError && *disconnectionError) {
- if ([*disconnectionError rangeOfString:@"The password provided is incorrect"].location != NSNotFound) {
- [self setLastDisconnectionError:AILocalizedString(@"Incorrect username or password","Error message displayed when the server reports username or password as being incorrect.")];
- [self serverReportedInvalidPassword];
- shouldAttemptReconnect = AIReconnectImmediately;
- }
- }
- return AIReconnectNever;
- //return shouldAttemptReconnect;
-}*/
-
-- (void)autoReconnectAfterDelay:(NSTimeInterval)delay
-{
- [super autoReconnectAfterDelay:5];
-}
-
-- (void)receivedIMChatMessage:(NSDictionary *)messageDict inChat:(AIChat *)chat
-{
- PurpleMessageFlags flags = [[messageDict objectForKey:@"PurpleMessageFlags"] intValue];
- //if its not a _SEND message let parent method deal with it
- if ((flags & PURPLE_MESSAGE_SEND) == 0) {
- return [super receivedIMChatMessage:messageDict
- inChat:chat];
- }
-
- //otherwise, add this message from ourselves to the right IM window
- NSAttributedString *attributedMessage = [[adium contentController] decodedIncomingMessage:[messageDict objectForKey:@"Message"]
- fromContact:nil
- onAccount:self];
- AIContentMessage *messageObject = [AIContentMessage messageInChat:chat
- withSource:self
- destination:self
- date:[messageDict objectForKey:@"Date"]
- message:attributedMessage
- autoreply:(flags & PURPLE_MESSAGE_AUTO_RESP) != 0];
-
- [[adium contentController] displayContentObject:messageObject
- usingContentFilters:YES
- immediately:NO];
-}
-
-
-- (BOOL)canSendOfflineMessageToContact:(AIListContact *)inContact
-{
- //shortcut parent method
- return YES;
-}
-
-/*#ifndef SKYPENET
-- (const char *)purpleAccountName
-{
- printf("puprleAccountName\n");
- //override parent method to grab the actual account UID from skype
- const char *uid = (const char *)skype_get_account_username(NULL);
- if (!uid || !strlen(uid))
- {
- return "Skype";
- }
- return uid;
-}
-
-- (NSString *)formattedUID
-{
- const char *uid = (const char *)skype_get_account_username(NULL);
- printf("formattedUID %s %x\n", uid, (guint)account);
- if (!uid || !strlen(uid))
- {
- return @"Skype";
- }
- //override parent method to grab the actual account UID from skype
- return [[NSString alloc] initWithUTF8String:uid];
-}
-
-- (NSString *)explicitFormattedUID
-{
- printf("explicitFormattedUID %x\n", (guint)account);
- return [self formattedUID];
-}
-#endif*/
-
-- (BOOL)shouldSetAliasesServerside
-{
- return YES;
-}
-
--(void)configurePurpleAccount{
- [super configurePurpleAccount];
-
- PurpleAccount *acct = [self purpleAccount];
-
- //purple_account_set_bool(account, "skypeout_online", TRUE);
- //purple_account_set_bool(account, "skype_sync", TRUE);
- //purple_account_set_bool(account, "check_for_updates", FALSE);
- //purple_account_set_bool(account, "skype_autostart", TRUE);
- //return;
-
- //Use this section of code once the account options page is set up
- BOOL skypeout_online = [[self preferenceForKey:KEY_SKYPE_SHOW_SKYPEOUT group:GROUP_ACCOUNT_STATUS] boolValue];
- purple_account_set_bool(acct, "skypeout_online", skypeout_online);
-
- BOOL skype_sync = [[self preferenceForKey:KEY_SKYPE_SYNC_OFFLINE group:GROUP_ACCOUNT_STATUS] boolValue];
- purple_account_set_bool(acct, "skype_sync", skype_sync);
-
- BOOL check_for_updates = [[self preferenceForKey:KEY_SKYPE_CHECK_FOR_UPDATES group:GROUP_ACCOUNT_STATUS] boolValue];
- purple_account_set_bool(acct, "check_for_updates", check_for_updates);
-
- BOOL skype_autostart = [[self preferenceForKey:KEY_SKYPE_AUTOSTART group:GROUP_ACCOUNT_STATUS] boolValue];
- purple_account_set_bool(acct, "skype_autostart", skype_autostart);
-}
-
--(NSDictionary *) extractChatCreationDictionaryFromConversation:(PurpleConversation *)conv
-{
-
- NSMutableDictionary *dict = [NSMutableDictionary dictionary];
- [dict setObject:[NSString stringWithUTF8String:purple_conversation_get_name(conv)] forKey:@"chat_id"];
- const char *pass = purple_conversation_get_data(conv, "password");
- if (pass)
- [dict setObject: [NSString stringWithUTF8String:pass] forKey:@"password"];
- return dict;
-}
-
-- (BOOL)groupChatsSupportTopic
-{
- return YES;
-}
-
-@end
diff --git a/PurpleSkypeAccountView.nib/classes.nib b/PurpleSkypeAccountView.nib/classes.nib
deleted file mode 100644
index ae37e5c..0000000
--- a/PurpleSkypeAccountView.nib/classes.nib
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBClasses</key>
- <array>
- <dict>
- <key>CLASS</key>
- <string>PurpleSkypeAccountViewController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>checkBox_autoStartSkype</key>
- <string>NSButton</string>
- <key>checkBox_skypeCheckUpdates</key>
- <string>NSButton</string>
- <key>checkBox_skypeOutOnline</key>
- <string>NSButton</string>
- <key>checkBox_skypeSyncOffline</key>
- <string>NSButton</string>
- <key>view_options</key>
- <string>NSView</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>AIAccountViewController</string>
- </dict>
- </array>
- <key>IBVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/PurpleSkypeAccountView.nib/info.nib b/PurpleSkypeAccountView.nib/info.nib
deleted file mode 100644
index 46e427c..0000000
--- a/PurpleSkypeAccountView.nib/info.nib
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBFramework Version</key>
- <string>677</string>
- <key>IBLastKnownRelativeProjectPath</key>
- <string>SkypePlugin.xcodeproj</string>
- <key>IBOldestOS</key>
- <integer>5</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>1</integer>
- </array>
- <key>IBSystem Version</key>
- <string>9G55</string>
- <key>targetFramework</key>
- <string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/PurpleSkypeAccountView.nib/keyedobjects.nib b/PurpleSkypeAccountView.nib/keyedobjects.nib
deleted file mode 100644
index cec22e6..0000000
--- a/PurpleSkypeAccountView.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/PurpleSkypeAccountViewController.h b/PurpleSkypeAccountViewController.h
deleted file mode 100644
index efdfd78..0000000
--- a/PurpleSkypeAccountViewController.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// PurpleSkypeAccountViewController.h
-// Adium
-//
-// Created by Eion Robb on 14/10/07.
-//
-
-#import <Adium/AIAccountViewController.h>
-
-@interface PurpleSkypeAccountViewController : AIAccountViewController {
- //IBOutlet NSView *view_options; //Account options (Host, port, mail, protocol, etc)
-
- IBOutlet NSButton *checkBox_skypeOutOnline;
- IBOutlet NSButton *checkBox_skypeSyncOffline;
- IBOutlet NSButton *checkBox_skypeCheckUpdates;
- IBOutlet NSButton *checkBox_autoStartSkype;
-}
-
-@end
diff --git a/PurpleSkypeAccountViewController.m b/PurpleSkypeAccountViewController.m
deleted file mode 100644
index 96c87fb..0000000
--- a/PurpleSkypeAccountViewController.m
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// PurpleSkypeAccountViewController.m
-// Adium
-//
-// Created by Eion Robb on 14/10/07.
-//
-
-#import "PurpleSkypeAccountViewController.h"
-#import "PurpleSkypeAccount.h"
-
-@implementation PurpleSkypeAccountViewController
-
-- (NSView *)privacyView{
- return nil;
-}
-
-- (NSString *)nibName{
- return @"PurpleSkypeAccountView";
-}
-
-#ifndef SKYPENET
-- (NSView *)setupView {
- return nil;
-}
-#endif
-
-//Configure our controls
-- (void)configureForAccount:(AIAccount *)inAccount
-{
- [super configureForAccount:inAccount];
-
- [checkBox_skypeOutOnline setState:[[account preferenceForKey:KEY_SKYPE_SHOW_SKYPEOUT group:GROUP_ACCOUNT_STATUS] boolValue]];
- [checkBox_skypeSyncOffline setState:[[account preferenceForKey:KEY_SKYPE_SYNC_OFFLINE group:GROUP_ACCOUNT_STATUS] boolValue]];
- //[checkBox_skypeCheckUpdates setState:[[account preferenceForKey:KEY_SKYPE_CHECK_FOR_UPDATES group:GROUP_ACCOUNG_STATUS] boolValue]];
- [checkBox_autoStartSkype setState:[[account preferenceForKey:KEY_SKYPE_AUTOSTART group:GROUP_ACCOUNT_STATUS] boolValue]];
-}
-
-//Save controls
-- (void)saveConfiguration
-{
- [super saveConfiguration];
-
- [account setPreference:[NSNumber numberWithBool:[checkBox_skypeOutOnline state]]
- forKey:KEY_SKYPE_SHOW_SKYPEOUT group:GROUP_ACCOUNT_STATUS];
- [account setPreference:[NSNumber numberWithBool:[checkBox_skypeSyncOffline state]]
- forKey:KEY_SKYPE_SYNC_OFFLINE group:GROUP_ACCOUNT_STATUS];
- //[account setPreference:[NSNumber numberWithBool:[checkBox_skypeCheckUpdates state]]
- // forKey:KEY_SKYPE_CHECK_FOR_UPDATES group:GROUP_ACCOUNT_STATUS];
- [account setPreference:[NSNumber numberWithBool:[checkBox_autoStartSkype state]]
- forKey:KEY_SKYPE_AUTOSTART group:GROUP_ACCOUNT_STATUS];
-}
-
-@end
diff --git a/PurpleSkypeService.h b/PurpleSkypeService.h
deleted file mode 100644
index adc6152..0000000
--- a/PurpleSkypeService.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// PurpleSkypeService.h
-// Adium
-//
-// Created by Eion Robb 14/10/07
-//
-
-#import "PurpleService.h"
-
-@interface PurpleSkypeService : PurpleService {
-
-}
-
-@end
diff --git a/PurpleSkypeService.m b/PurpleSkypeService.m
deleted file mode 100644
index da326e8..0000000
--- a/PurpleSkypeService.m
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// PurpleSkypeService.m
-// Adium
-//
-// Created by Eion Robb on 14/10/07.
-//
-
-#import "PurpleSkypeService.h"
-#import "PurpleSkypeAccount.h"
-#import <AIUtilities/AIImageAdditions.h>
-#import <Adium/DCJoinChatViewController.h>
-#import <Adium/AIStatusControllerProtocol.h>
-#import <Adium/AISharedAdium.h>
-
-#import "SkypeJoinChatViewController.h"
-#import "PurpleSkypeAccountViewController.h"
-
-@implementation PurpleSkypeService
-
-//Account Creation
-- (Class)accountClass{
- return [PurpleSkypeAccount class];
-}
-
-- (AIAccountViewController *)accountViewController{
- return [PurpleSkypeAccountViewController accountViewController];
-}
-
-- (DCJoinChatViewController *)joinChatView{
- return [SkypeJoinChatViewController joinChatView];
-}
-
-#ifdef SKYPENET
-- (BOOL)supportsProxySettings{
- return YES;
-}
-
-- (BOOL)supportsPassword
-{
- return YES;
-}
-
-- (BOOL)requiresPassword
-{
- return YES;
-}
-//Service Description
-- (NSString *)serviceCodeUniqueID{
- return @"prpl-bigbrownchunx-skypenet";
-}
-- (NSString *)serviceID{
- return @"SkypeNet";
-}
-- (NSString *)serviceClass{
- return @"SkypeNet";
-}
-- (NSString *)shortDescription{
- return @"SkypeNet";
-}
-- (NSString *)longDescription{
- return @"SkypeNet";
-}
-#else
-- (BOOL)supportsProxySettings{
- return NO;
-}
-
-- (BOOL)supportsPassword
-{
- return NO;
-}
-
-- (BOOL)requiresPassword
-{
- return NO;
-}
-
-- (NSString *)UIDPlaceholder
-{
- return @"Skype";
-}
-
-//Service Description
-- (NSString *)serviceCodeUniqueID{
- return @"prpl-bigbrownchunx-skype";
-}
-- (NSString *)serviceID{
- return @"Skype";
-}
-- (NSString *)serviceClass{
- return @"Skype";
-}
-- (NSString *)shortDescription{
- return @"Skype";
-}
-- (NSString *)longDescription{
- return @"Skype API";
-}
-#endif
-- (NSCharacterSet *)allowedCharacters{
- return [[NSCharacterSet illegalCharacterSet] invertedSet];
-}
-- (NSCharacterSet *)ignoredCharacters{
- return [NSCharacterSet characterSetWithCharactersInString:@""];
-}
-- (NSUInteger)allowedLength{
- return 9999;
-}
-- (BOOL)caseSensitive{
- return NO;
-}
-- (AIServiceImportance)serviceImportance{
- return AIServicePrimary;
-}
-- (BOOL)canCreateGroupChats
-{
- return YES;
-}
-
-/*- (void)registerStatuses
-{
-#define SKYPE_ADD_STATUS(status,statustype) [[adium statusController] registerStatus:status \
- withDescription:[[adium statusController] localizedDescriptionForCoreStatusName:status]\
- ofType:statustype \
- forService:self];
- SKYPE_ADD_STATUS(STATUS_NAME_AVAILABLE, AIAvailableStatusType);
- //SKYPE_ADD_STATUS(STATUS_NAME_FREE_FOR_CHAT, AIAvailableStatusType);
- [[adium statusController] registerStatus:STATUS_NAME_FREE_FOR_CHAT
- withDescription:@"SkypeMe"
- ofType:AIAvailableStatusType
- forService:self];
- SKYPE_ADD_STATUS(STATUS_NAME_AWAY, AIAwayStatusType);
- SKYPE_ADD_STATUS(STATUS_NAME_EXTENDED_AWAY, AIAwayStatusType);
- SKYPE_ADD_STATUS(STATUS_NAME_DND, AIAwayStatusType);
- SKYPE_ADD_STATUS(STATUS_NAME_INVISIBLE, AIInvisibleStatusType);
- SKYPE_ADD_STATUS(STATUS_NAME_OFFLINE, AIOfflineStatusType);
-}*/
-
-/*!
- * @brief Default icon
- *
- * Service Icon packs should always include images for all the built-in Adium services. This method allows external
- * service plugins to specify an image which will be used when the service icon pack does not specify one. It will
- * also be useful if new services are added to Adium itself after a significant number of Service Icon packs exist
- * which do not yet have an image for this service. If the active Service Icon pack provides an image for this service,
- * this method will not be called.
- *
- * The service should _not_ cache this icon internally; multiple calls should return unique NSImage objects.
- *
- * @param iconType The AIServiceIconType of the icon to return. This specifies the desired size of the icon.
- * @return NSImage to use for this service by default
- */
-- (NSImage *)defaultServiceIconOfType:(AIServiceIconType)iconType
-{
- NSImage *image;
- NSString *imagename;
- NSSize imagesize;
-
- if (iconType == AIServiceIconLarge)
- {
- imagename = @"skype";
- imagesize = NSMakeSize(48,48);
- } else {
- imagename = @"skype-small";
- imagesize = NSMakeSize(16,16);
- }
-
- image = [NSImage imageNamed:(imagename)
- forClass:[self class] loadLazily:YES];
- [image setSize:imagesize];
- return image;
-}
-
-#ifndef SKYPENET
-- (NSString *)defaultUserName {
- return @"Skype";
-}
-#endif
-
-@end
diff --git a/README.md b/README.md
index 688b775..bb699b3 100644
--- a/README.md
+++ b/README.md
@@ -1,95 +1,3 @@
-If you're reading this, you probably want the newer SkypeWeb plugin from [here](https://github.com/EionRobb/skype4pidgin/tree/master/skypeweb). The readme for the legacy Skype plugin is below:
+If you're reading this, you probably want the newer SkypeWeb plugin from [here](https://github.com/EionRobb/skype4pidgin/tree/master/skypeweb).
-
-
-Skype plugin for Pidgin/Adium/libpurple
-========================================
-
-If you've found this file then you'll probably realise that this is the Skype plugin for libpurple. Yes, it does require Skype to be running as it uses the Skype API to communicate with a running copy of Skype. The Windows and Linux versions were made by me in a week. The OS X version has taken lots longer, but it needed reverse engineering of the Skype.framework before it was GPL compatable.
-
-
-History/Ramble
-==============
-
-It seems people have wanted a Skype plugin for Gaim/Pidgin/Adium for a long time, however it seems to be rare to find a glib coder who uses Pidgin who also uses Skype. There seems to have been a lot of stigma over Skype being closed-source and evil, however there has still been a demand for this plugin and the end-user has suffered for long enough. That was kind of my motivation. Plus I enjoy both Pidgin and Skype and it made sense to me to combine the two. I know it's not the ideal solution (to still have Skype running), but if you're going to have it running, you might as well have your buddies in one place, right?
-
-
-Installation
-============
-
-For the binary version of the plugin, either install the appropriate package or .exe for your distro or copy libskype to the appropriate plugins directory. On Windows its normally C:\Program Files\Pidgin\plugins, on Linux it's normally /usr/lib/purple-2/ or ~/.purple/plugins
-On OSX, double click on SkypePlugin.AdiumPlugin to install (may need a restart of Adium). You may need to delete the old version which is at ~/Library/Application Support/Adium 2.0/Plugins. If upgrading to Adium 1.2, you will need to delete the account and re-add it.
-
-To install swanky looking icons, extract skype_icons.zip to the pixmaps/pidgin/protocols directory (on Windows, C:\Program Files\Pidgin\pixmaps\pidgin\protocols).
-To have the right smilies/emotes in your Skype chat messages, copy themes into the pixmaps/pidgin/emotes/default folder.
-
-To compile from source, the easiest way is extract libskype.zip into the ${PIDGIN_SOURCE}/libpurple/plugins/ directory and compile using "make libpurple.so" or "make -f Makefile.mingw libpurple.dll"
-
-
-Known Issues
-============
-
-* No notification popup on file being received/notifications (Windows)
-
-* Skype sounds still play even when it's hidden
-
-* Adium doesn't show file transfer progress (OS X)
-* Unable to send file from within Adium (API Limitation)
-* Send file doesn't use the built in libpurple methods. (API Limitation)
-* Linux version still opens up Skype message windows. (API Limitation)
-* No typing notifications with official Skype clients. (API Limitation)
-
-
-FAQ
-===
-
-Q: Does this plugin require Skype to be running?
-A: Yes.
-
-Q: Can you make a version that doesn't need Skype?
-A: Not possible right now.
-
-Q: What version of Pidgin do I need to be able to run this plugin?
-A: You need at least version 2.1.1 of Pidgin. You can download updates to Pidgin from www.pidgin.im
-
-Q: What version of Adium do I need to be able to run this plugin?
-A: You need version 1.2 to run the latest version of the plugin or 1.1 to run the older version of the plugin. You can download updates to Adium from www.adiumx.com
-
-Q: Where can I get the protocol icons?
-A: Download skype_icons.zip from this website and install the icons into the appropriate pixmaps/pidgin/protocols directory.
-
-Q: How can I hide the Skype icon from the tray?
-A: I'm planning to automate and make this cross-platform.
-
-Q: How can I hide the Skype icon from the tray on Windows?
-A: Right click on the taskbar, click Properties, click the Customize... button, find Skype in the list, click on it, choose 'Always Hide' from the drop-down box.
-
-Q: How can I hide Skype in OSX?
-A: Focus (click on) the Skype window, press ⌘+H to hide the application. Alternativly, focus the Skype window and choose 'Hide Skype' from the 'Skype' menu.
-
-Q: How can I hide Skype in Linux?
-A: A bit more tricky. What works well for me, is turning off message windows in the Notifications settings in Skype (Options->Chat->Display an event notification). Otherwise, you can leave the message window open, but move it to another workspace so that it doesn't bother you any more.
-
-Q: The Windows version has feature "X", but the Linux/OSX version doesn't
-A: The API on Linux/OSX is more restrictive than the Windows API. Try keeping up to date with the latest versions of Skype to take advantage of these features as they are implemented by the Skype developers.
-
-Q: Why is "Send file..." not in the conversation menu, but in the "More..." menu instead?
-A: The short answer is that Skype doesn't allow file sending in the way that libpurple wants, so it has to do it through a Skype popup instead of a Pidgin popup
-
-Q: I set my status to "Away" but Skype still shows me as "Online"?
-A: For some reason the Skype tray icon isn't always what is being seen at the other end. Just ignore it :)
-
-Q: On OSX, I get bugged with the "Allow API Access" window from Skype every time Adium starts?
-A: Turn on "access for assistive devices" See: http://images.apple.com/applescript/uiscripting/gfx/gui.03.jpg
-
-Contact
-=======
-
-If you've got any questions/problems/comments with this plugin, feel free to flick me an email at eion@robbmob.com or chat message on Skype at bigbrownchunx.
-
-
-Legal
-=====
-Skype is the trademark of Skype Limited
-
diff --git a/SkypeJoinChatView.nib/classes.nib b/SkypeJoinChatView.nib/classes.nib
deleted file mode 100644
index e909c25..0000000
--- a/SkypeJoinChatView.nib/classes.nib
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBClasses</key>
- <array>
- <dict>
- <key>CLASS</key>
- <string>SkypeJoinChatViewController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>textField_inviteUsers</key>
- <string>AICompletingTextField</string>
- <key>textField_password</key>
- <string>NSTextField</string>
- <key>textField_roomName</key>
- <string>NSTextField</string>
- <key>view</key>
- <string>NSView</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>DCJoinChatViewController</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>AICompletingTextField</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSTextField</string>
- </dict>
- </array>
- <key>IBVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/SkypeJoinChatView.nib/info.nib b/SkypeJoinChatView.nib/info.nib
deleted file mode 100644
index 46e427c..0000000
--- a/SkypeJoinChatView.nib/info.nib
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBFramework Version</key>
- <string>677</string>
- <key>IBLastKnownRelativeProjectPath</key>
- <string>SkypePlugin.xcodeproj</string>
- <key>IBOldestOS</key>
- <integer>5</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>1</integer>
- </array>
- <key>IBSystem Version</key>
- <string>9G55</string>
- <key>targetFramework</key>
- <string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/SkypeJoinChatView.nib/keyedobjects.nib b/SkypeJoinChatView.nib/keyedobjects.nib
deleted file mode 100644
index 41c286a..0000000
--- a/SkypeJoinChatView.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/SkypeJoinChatViewController.h b/SkypeJoinChatViewController.h
deleted file mode 100644
index 5e4dfa4..0000000
--- a/SkypeJoinChatViewController.h
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-#import <Adium/DCJoinChatViewController.h>
-
-@class AIAccount, AICompletingTextField;
-
-@interface SkypeJoinChatViewController : DCJoinChatViewController {
- //IBOutlet NSView *view; // Custom view
-
- IBOutlet NSTextField *textField_roomName;
- IBOutlet NSTextField *textField_password;
-
- IBOutlet AICompletingTextField *textField_inviteUsers;
-}
-
-- (void)setRoomName:(NSString*)roomName;
-
-@end
diff --git a/SkypeJoinChatViewController.m b/SkypeJoinChatViewController.m
deleted file mode 100644
index 4d51382..0000000
--- a/SkypeJoinChatViewController.m
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-#import "SkypeJoinChatViewController.h"
-#import <Adium/AIContactControllerProtocol.h>
-#import <Adium/DCJoinChatWindowController.h>
-#import <AIUtilities/AICompletingTextField.h>
-
-/*@interface SkypeJoinChatViewController ()
-- (void)_configureTextField;
-@end*/
-
-@implementation SkypeJoinChatViewController
-
-- (id)init
-{
- if ((self = [super init]))
- {
- [textField_inviteUsers setDragDelegate:self];
- [textField_inviteUsers registerForDraggedTypes:[NSArray arrayWithObjects:@"AIListObject", @"AIListObjectUniqueIDs", nil]];
- }
-
- return self;
-}
-
-- (void)configureForAccount:(AIAccount *)inAccount
-{
- [super configureForAccount:inAccount];
-
- //[(DCJoinChatWindowController *)delegate setJoinChatEnabled:NO];
- [[view window] makeFirstResponder:textField_roomName];
-
- [textField_inviteUsers setMinStringLength:2];
- [textField_inviteUsers setCompletesOnlyAfterSeparator:YES];
- //[self _configureTextField];
-}
-
-- (void)joinChatWithAccount:(AIAccount *)inAccount
-{
- NSString *room = [textField_roomName stringValue];
- NSString *password = [textField_password stringValue];
- NSMutableDictionary *chatCreationInfo;
-
- if (![room length]) return [super joinChatWithAccount:inAccount];
-
- if (![password length]) password = nil;
-
- chatCreationInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
- room, @"chat_id",
- nil];
-
- if (password) {
- [chatCreationInfo setObject:password
- forKey:@"password"];
- }
-
- [self doJoinChatWithName:room
- onAccount:inAccount
- chatCreationInfo:chatCreationInfo
- invitingContacts:[self contactsFromNamesSeparatedByCommas:[textField_inviteUsers stringValue] onAccount:inAccount]
- withInvitationMessage:nil];
-}
-
-- (NSString *)nibName
-{
- return @"SkypeJoinChatView";
-}
-
-- (NSString *)impliedCompletion:(NSString *)aString
-{
- return [textField_inviteUsers impliedStringValueForString:aString];
-}
-/*
-- (void)_configureTextField
-{
- NSEnumerator *enumerator;
- AIListContact *contact;
-
- //Clear the completing strings
- [textField_inviteUsers setCompletingStrings:nil];
-
- //Configure the auto-complete view to autocomplete for contacts matching the selected account's service
- enumerator = [[[[AIObject sharedAdiumInstance] contactController] allContacts] objectEnumerator];
- while ((contact = [enumerator nextObject])) {
- if (contact.service == account.service) {
- NSString *UID = contact.UID;
- [textField_inviteUsers addCompletionString:contact.formattedUID withImpliedCompletion:UID];
- [textField_inviteUsers addCompletionString:contact.displayName withImpliedCompletion:UID];
- [textField_inviteUsers addCompletionString:UID];
- }
- }
-}*/
-
-- (void)setRoomName:(NSString*)roomName {
- [textField_roomName setStringValue:roomName];
-}
-
-#pragma mark Dragging Delegate
-
-- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
-{
- return YES;
-}
-
-- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
-{
- return [super doPerformDragOperation:sender toField:textField_inviteUsers];
-}
-
-- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
-{
- return [super doDraggingEntered:sender];
-}
-
-
-
-
-@end
diff --git a/SkypePlugin.h b/SkypePlugin.h
deleted file mode 100644
index df923be..0000000
--- a/SkypePlugin.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// SkypePlugin.h
-// SkypePlugin
-//
-// Created by Eion Robb on 14/10/07.
-//
-
-#import <Adium/AIPlugin.h>
-
-@interface SkypePlugin : AIPlugin{
- id SkypeService;
-}
-
-@end
diff --git a/SkypePlugin.m b/SkypePlugin.m
deleted file mode 100644
index 1692537..0000000
--- a/SkypePlugin.m
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// SkypePlugin.m
-// SkypePlugin
-//
-// Created by Eion Robb on 14/10/07.
-//
-
-#import "SkypePlugin.h"
-#import "PurpleSkypeAccount.h"
-#import "PurpleSkypeService.h"
-#import <AdiumLibpurple/adiumPurpleFt.h>
-#import <AdiumLibpurple/adiumPurpleEventloop.h>
-#import <Adium/ESFileTransfer.h>
-#import <libpurple/libpurple.h>
-#include <dlfcn.h>
-
-extern PurplePlugin *purple_plugin_new(gboolean native, const char *path) __attribute__((weak_import));
-//extern void g_thread_init (GThreadFunctions *vtable) __attribute__((weak_import));
-
-guint (*adium_timeout_add)(guint, GSourceFunc, gpointer);
-gboolean purple_init_skype_plugin(void);
-
-static void skypeAdiumPurpleAddXfer(PurpleXfer *xfer)
-{
- if (!xfer || !xfer->account || strcmp(xfer->account->protocol_id, "prpl-bigbrownchunx-skype"))
- return;
-
- ESFileTransfer *fileTransfer;
-
- //Ask the account for an ESFileTransfer* object
- fileTransfer = [accountLookup(xfer->account) newFileTransferObjectWith:[NSString stringWithUTF8String:(xfer->who)]
- size:purple_xfer_get_size(xfer)
- remoteFilename:[NSString stringWithUTF8String:(xfer->filename)]];
-
- //Configure the new object for the transfer
- [fileTransfer setAccountData:[NSValue valueWithPointer:xfer]];
-
- xfer->ui_data = [fileTransfer retain];
-}
-
-guint adium_threadsafe_timeout_add(guint interval, GSourceFunc function, gpointer data)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- guint return_val = adium_timeout_add(interval, function, data);
- [pool release];
- return return_val;
-}
-
-@implementation SkypePlugin
-
-- (void)installPlugin
-{
- printf("Installing SkypePlugin\n");
-
- //Check that we can thread stuff
- if (dlsym(RTLD_DEFAULT, "g_thread_init") == NULL)
- {
- printf("No g_thread_init();\n");
- //try opening thread libraries
- dlopen("~/Library/Application Support/Adium 2.0/PlugIns/SkypePlugin.AdiumLibpurplePlugin/Contents/Libraries/libgthread-2.0.0.dylib", RTLD_LAZY);
- if (dlsym(RTLD_DEFAULT, "g_thread_init") == NULL)
- {
- printf("Can't load GThread :(\n");
- return;
- }
- }
-
- printf("Calling purple_init_skype_plugin()\n");
- //Hack in our own transfer code and thread-safe timeout loop
- adium_purple_xfers_get_ui_ops()->add_xfer = skypeAdiumPurpleAddXfer;
- //adium_timeout_add = adium_purple_eventloop_get_ui_ops()->timeout_add;
- //adium_purple_eventloop_get_ui_ops()->timeout_add = adium_threadsafe_timeout_add;
-#ifdef ENABLE_NLS
- //bindtextdomain("pidgin", [[[NSBundle bundleWithIdentifier:@"im.pidgin.libpurple"] resourcePath] fileSystemRepresentation]);
- //bind_textdomain_codeset("pidgin", "UTF-8");
- //textdomain("pidgin");
-
- bindtextdomain("skype4pidgin", [[[[NSBundle bundleWithIdentifier:@"org.bigbrownchunx.skypeplugin"] resourcePath] stringByAppendingPathComponent:@"/locale"] fileSystemRepresentation]);
- bind_textdomain_codeset("skype4pidgin", "UTF-8");
- textdomain("skype4pidgin");
-#endif
-
- purple_init_skype_plugin();
- printf("Initialising PurpleSkypeService\n");
- SkypeService = [[PurpleSkypeService alloc] init];
-}
-
-- (void)uninstallPlugin
-{
- [SkypeService release]; SkypeService = nil;
-}
-
-@end
diff --git a/SkypePlugin.xcodeproj/mymacspace.mode1 b/SkypePlugin.xcodeproj/mymacspace.mode1
deleted file mode 100644
index 0f2a13b..0000000
--- a/SkypePlugin.xcodeproj/mymacspace.mode1
+++ /dev/null
@@ -1,1446 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>ActivePerspectiveName</key>
- <string>Project</string>
- <key>AllowedModules</key>
- <array>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Name</key>
- <string>Groups and Files Outline View</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Name</key>
- <string>Editor</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCTaskListModule</string>
- <key>Name</key>
- <string>Task List</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCDetailModule</string>
- <key>Name</key>
- <string>File and Smart Group Detail Viewer</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXBuildResultsModule</string>
- <key>Name</key>
- <string>Detailed Build Results Viewer</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXProjectFindModule</string>
- <key>Name</key>
- <string>Project Batch Find Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXRunSessionModule</string>
- <key>Name</key>
- <string>Run Log</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXBookmarksModule</string>
- <key>Name</key>
- <string>Bookmarks Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXClassBrowserModule</string>
- <key>Name</key>
- <string>Class Browser</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXCVSModule</string>
- <key>Name</key>
- <string>Source Code Control Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXDebugBreakpointsModule</string>
- <key>Name</key>
- <string>Debug Breakpoints Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCDockableInspector</string>
- <key>Name</key>
- <string>Inspector</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXOpenQuicklyModule</string>
- <key>Name</key>
- <string>Open Quickly Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXDebugSessionModule</string>
- <key>Name</key>
- <string>Debugger</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXDebugCLIModule</string>
- <key>Name</key>
- <string>Debug Console</string>
- </dict>
- </array>
- <key>Description</key>
- <string>DefaultDescriptionKey</string>
- <key>DockingSystemVisible</key>
- <false/>
- <key>Extension</key>
- <string>mode1</string>
- <key>FavBarConfig</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A6296F10CC1EC150064C5C6</string>
- <key>XCBarModuleItemNames</key>
- <dict/>
- <key>XCBarModuleItems</key>
- <array/>
- </dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>com.apple.perspectives.project.mode1</string>
- <key>MajorVersion</key>
- <integer>31</integer>
- <key>MinorVersion</key>
- <integer>1</integer>
- <key>Name</key>
- <string>Default</string>
- <key>Notifications</key>
- <array/>
- <key>OpenEditors</key>
- <array>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A629D9D0CC36F410064C5C6</string>
- <key>PBXProjectModuleLabel</key>
- <string>SkypePlugin.m</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A629D9E0CC36F410064C5C6</string>
- <key>PBXProjectModuleLabel</key>
- <string>SkypePlugin.m</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>7A8F20E60CD1B70C001F4F70</string>
- <key>history</key>
- <array>
- <string>7A8F20CA0CD1B57C001F4F70</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {667, 531}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>765 244 667 572 0 0 1440 878 </string>
- </dict>
- </dict>
- <dict>
- <key>Content</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A629DA00CC36F410064C5C6</string>
- <key>PBXProjectModuleLabel</key>
- <string>SkypePlugin.h</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A629DA10CC36F410064C5C6</string>
- <key>PBXProjectModuleLabel</key>
- <string>SkypePlugin.h</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>7A8F20E70CD1B70C001F4F70</string>
- <key>history</key>
- <array>
- <string>7A8F20CB0CD1B57C001F4F70</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>Geometry</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 20}, {667, 531}}</string>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <false/>
- <key>RubberWindowFrame</key>
- <string>649 245 667 572 0 0 1440 878 </string>
- </dict>
- </dict>
- </array>
- <key>PerspectiveWidths</key>
- <array>
- <integer>-1</integer>
- <integer>-1</integer>
- </array>
- <key>Perspectives</key>
- <array>
- <dict>
- <key>ChosenToolbarItems</key>
- <array>
- <string>active-target-popup</string>
- <string>active-buildstyle-popup</string>
- <string>action</string>
- <string>NSToolbarFlexibleSpaceItem</string>
- <string>buildOrClean</string>
- <string>build-and-runOrDebug</string>
- <string>com.apple.ide.PBXToolbarStopButton</string>
- <string>get-info</string>
- <string>toggle-editor</string>
- <string>NSToolbarFlexibleSpaceItem</string>
- <string>com.apple.pbx.toolbar.searchfield</string>
- </array>
- <key>ControllerClassBaseName</key>
- <string></string>
- <key>IconName</key>
- <string>WindowOfProjectWithEditor</string>
- <key>Identifier</key>
- <string>perspective.project</string>
- <key>IsVertical</key>
- <false/>
- <key>Layout</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <true/>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXBottomSmartGroupGIDs</key>
- <array>
- <string>1C37FBAC04509CD000000102</string>
- <string>1C37FAAC04509CD000000102</string>
- <string>1C08E77C0454961000C914BD</string>
- <string>1C37FABC05509CD000000102</string>
- <string>1C37FABC05539CD112110102</string>
- <string>E2644B35053B69B200211256</string>
- <string>1C37FABC04509CD000100104</string>
- <string>1CC0EA4004350EF90044410B</string>
- <string>1CC0EA4004350EF90041110B</string>
- </array>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Files</string>
- <key>PBXProjectStructureProvided</key>
- <string>yes</string>
- <key>PBXSmartGroupTreeModuleColumnData</key>
- <dict>
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
- <array>
- <real>186</real>
- </array>
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
- <array>
- <string>MainColumn</string>
- </array>
- </dict>
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
- <dict>
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
- <array>
- <string>089C166AFE841209C02AAC07</string>
- <string>7A629DBC0CC375410064C5C6</string>
- <string>089C1671FE841209C02AAC07</string>
- <string>1058C7ACFEA557BF11CA2CBB</string>
- <string>1058C7AEFEA557BF11CA2CBB</string>
- <string>1C37FBAC04509CD000000102</string>
- <string>1C37FABC05509CD000000102</string>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
- <array>
- <array>
- <integer>0</integer>
- </array>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {186, 546}}</string>
- </dict>
- <key>PBXTopSmartGroupGIDs</key>
- <array/>
- <key>XCIncludePerspectivesSwitch</key>
- <true/>
- <key>XCSharingToken</key>
- <string>com.apple.Xcode.GFSharingToken</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {203, 564}}</string>
- <key>GroupTreeTableConfiguration</key>
- <array>
- <string>MainColumn</string>
- <real>186</real>
- </array>
- <key>RubberWindowFrame</key>
- <string>271 237 1032 605 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Proportion</key>
- <string>203pt</string>
- </dict>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20306471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>InfoPlist.strings</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20406471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>InfoPlist.strings</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>7A8F20E30CD1B70C001F4F70</string>
- <key>history</key>
- <array>
- <string>7A629E180CC3783F0064C5C6</string>
- <string>7AE5BE2C0CC3921F00125D43</string>
- <string>7AE5BEFE0CC3988D00125D43</string>
- <string>7AE5BF000CC3988D00125D43</string>
- <string>7AE5BF010CC3988D00125D43</string>
- <string>7AE5BF020CC3988D00125D43</string>
- <string>7A398D630CC47049006536F6</string>
- <string>7A93A4A70CCEE293008F5639</string>
- <string>7A93A4F50CD04153008F5639</string>
- <string>7A93A51C0CD05862008F5639</string>
- <string>7A93A52D0CD05B38008F5639</string>
- <string>7A93A54D0CD05D22008F5639</string>
- <string>7A24C3480CD1ABFD0090E475</string>
- <string>7A8F20C20CD1B57C001F4F70</string>
- <string>7A8F20C30CD1B57C001F4F70</string>
- <string>7A8F20C70CD1B57C001F4F70</string>
- </array>
- <key>prevStack</key>
- <array>
- <string>7A629DC20CC3758F0064C5C6</string>
- <string>7A629E1A0CC3783F0064C5C6</string>
- <string>7AE5BCAC0CC37EC000125D43</string>
- <string>7AE5BE2D0CC3921F00125D43</string>
- <string>7AE5BF090CC3988D00125D43</string>
- <string>7AE5BF0A0CC3988D00125D43</string>
- <string>7AE5BF0C0CC3988D00125D43</string>
- <string>7AE5BF0D0CC3988D00125D43</string>
- <string>7AE5BF0E0CC3988D00125D43</string>
- <string>7AE5BF0F0CC3988D00125D43</string>
- <string>7AE5BF100CC3988D00125D43</string>
- <string>7AE5BF120CC3988D00125D43</string>
- <string>7A398D660CC47049006536F6</string>
- <string>7A93A4D40CCEE414008F5639</string>
- <string>7A8F20C60CD1B57C001F4F70</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {824, 400}}</string>
- <key>RubberWindowFrame</key>
- <string>271 237 1032 605 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>400pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20506471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Detail</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 405}, {824, 159}}</string>
- <key>RubberWindowFrame</key>
- <string>271 237 1032 605 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>XCDetailModule</string>
- <key>Proportion</key>
- <string>159pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>824pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Project</string>
- <key>ServiceClasses</key>
- <array>
- <string>XCModuleDock</string>
- <string>PBXSmartGroupTreeModule</string>
- <string>XCModuleDock</string>
- <string>PBXNavigatorGroup</string>
- <string>XCDetailModule</string>
- </array>
- <key>TableOfContents</key>
- <array>
- <string>7A8F20E40CD1B70C001F4F70</string>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <string>7A8F20E50CD1B70C001F4F70</string>
- <string>1CE0B20306471E060097A5F4</string>
- <string>1CE0B20506471E060097A5F4</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.default</string>
- </dict>
- <dict>
- <key>ControllerClassBaseName</key>
- <string></string>
- <key>IconName</key>
- <string>WindowOfProject</string>
- <key>Identifier</key>
- <string>perspective.morph</string>
- <key>IsVertical</key>
- <integer>0</integer>
- <key>Layout</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXBottomSmartGroupGIDs</key>
- <array>
- <string>1C37FBAC04509CD000000102</string>
- <string>1C37FAAC04509CD000000102</string>
- <string>1C08E77C0454961000C914BD</string>
- <string>1C37FABC05509CD000000102</string>
- <string>1C37FABC05539CD112110102</string>
- <string>E2644B35053B69B200211256</string>
- <string>1C37FABC04509CD000100104</string>
- <string>1CC0EA4004350EF90044410B</string>
- <string>1CC0EA4004350EF90041110B</string>
- </array>
- <key>PBXProjectModuleGUID</key>
- <string>11E0B1FE06471DED0097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Files</string>
- <key>PBXProjectStructureProvided</key>
- <string>yes</string>
- <key>PBXSmartGroupTreeModuleColumnData</key>
- <dict>
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
- <array>
- <real>186</real>
- </array>
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
- <array>
- <string>MainColumn</string>
- </array>
- </dict>
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
- <dict>
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
- <array>
- <string>29B97314FDCFA39411CA2CEA</string>
- <string>1C37FABC05509CD000000102</string>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
- <array>
- <array>
- <integer>0</integer>
- </array>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {186, 337}}</string>
- </dict>
- <key>PBXTopSmartGroupGIDs</key>
- <array/>
- <key>XCIncludePerspectivesSwitch</key>
- <integer>1</integer>
- <key>XCSharingToken</key>
- <string>com.apple.Xcode.GFSharingToken</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {203, 355}}</string>
- <key>GroupTreeTableConfiguration</key>
- <array>
- <string>MainColumn</string>
- <real>186</real>
- </array>
- <key>RubberWindowFrame</key>
- <string>373 269 690 397 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Morph</string>
- <key>PreferredWidth</key>
- <integer>300</integer>
- <key>ServiceClasses</key>
- <array>
- <string>XCModuleDock</string>
- <string>PBXSmartGroupTreeModule</string>
- </array>
- <key>TableOfContents</key>
- <array>
- <string>11E0B1FE06471DED0097A5F4</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.default.short</string>
- </dict>
- </array>
- <key>PerspectivesBarVisible</key>
- <false/>
- <key>ShelfIsVisible</key>
- <false/>
- <key>SourceDescription</key>
- <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TimeStamp</key>
- <real>0.0</real>
- <key>ToolbarDisplayMode</key>
- <integer>1</integer>
- <key>ToolbarIsVisible</key>
- <true/>
- <key>ToolbarSizeMode</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Perspectives</string>
- <key>UpdateMessage</key>
- <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
- <key>WindowJustification</key>
- <integer>5</integer>
- <key>WindowOrderList</key>
- <array>
- <string>7A6296F60CC1EC150064C5C6</string>
- <string>7A629DA00CC36F410064C5C6</string>
- <string>7A629D9D0CC36F410064C5C6</string>
- <string>/Users/mymacspace/SkypePlugin/SkypePlugin.xcodeproj</string>
- </array>
- <key>WindowString</key>
- <string>271 237 1032 605 0 0 1440 878 </string>
- <key>WindowTools</key>
- <array>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.build</string>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528F0623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string></string>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {1230, 223}}</string>
- <key>RubberWindowFrame</key>
- <string>114 92 1230 505 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>223pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>XCMainBuildResultsModuleGUID</string>
- <key>PBXProjectModuleLabel</key>
- <string>Build</string>
- <key>XCBuildResultsTrigger_Collapse</key>
- <integer>1021</integer>
- <key>XCBuildResultsTrigger_Open</key>
- <integer>1011</integer>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 228}, {1230, 236}}</string>
- <key>RubberWindowFrame</key>
- <string>114 92 1230 505 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXBuildResultsModule</string>
- <key>Proportion</key>
- <string>236pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>464pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Build Results</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXBuildResultsModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>7A6296F60CC1EC150064C5C6</string>
- <string>7A8F20E80CD1B70C001F4F70</string>
- <string>1CD0528F0623707200166675</string>
- <string>XCMainBuildResultsModuleGUID</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.build</string>
- <key>WindowString</key>
- <string>114 92 1230 505 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>7A6296F60CC1EC150064C5C6</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.debugger</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>Debugger</key>
- <dict>
- <key>HorizontalSplitView</key>
- <dict>
- <key>_collapsingFrameDimension</key>
- <real>0.0</real>
- <key>_indexOfCollapsedView</key>
- <integer>0</integer>
- <key>_percentageOfCollapsedView</key>
- <real>0.0</real>
- <key>isCollapsed</key>
- <string>yes</string>
- <key>sizes</key>
- <array>
- <string>{{0, 0}, {317, 164}}</string>
- <string>{{317, 0}, {377, 164}}</string>
- </array>
- </dict>
- <key>VerticalSplitView</key>
- <dict>
- <key>_collapsingFrameDimension</key>
- <real>0.0</real>
- <key>_indexOfCollapsedView</key>
- <integer>0</integer>
- <key>_percentageOfCollapsedView</key>
- <real>0.0</real>
- <key>isCollapsed</key>
- <string>yes</string>
- <key>sizes</key>
- <array>
- <string>{{0, 0}, {694, 164}}</string>
- <string>{{0, 164}, {694, 216}}</string>
- </array>
- </dict>
- </dict>
- <key>LauncherConfigVersion</key>
- <string>8</string>
- <key>PBXProjectModuleGUID</key>
- <string>1C162984064C10D400B95A72</string>
- <key>PBXProjectModuleLabel</key>
- <string>Debug - GLUTExamples (Underwater)</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>DebugConsoleDrawerSize</key>
- <string>{100, 120}</string>
- <key>DebugConsoleVisible</key>
- <string>None</string>
- <key>DebugConsoleWindowFrame</key>
- <string>{{200, 200}, {500, 300}}</string>
- <key>DebugSTDIOWindowFrame</key>
- <string>{{200, 200}, {500, 300}}</string>
- <key>Frame</key>
- <string>{{0, 0}, {694, 380}}</string>
- <key>RubberWindowFrame</key>
- <string>321 238 694 422 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXDebugSessionModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Debugger</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXDebugSessionModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>1</integer>
- <key>TableOfContents</key>
- <array>
- <string>1CD10A99069EF8BA00B06720</string>
- <string>1C0AD2AB069F1E9B00FABCE6</string>
- <string>1C162984064C10D400B95A72</string>
- <string>1C0AD2AC069F1E9B00FABCE6</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.debug</string>
- <key>WindowString</key>
- <string>321 238 694 422 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1CD10A99069EF8BA00B06720</string>
- <key>WindowToolIsVisible</key>
- <integer>0</integer>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.find</string>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CDD528C0622207200134675</string>
- <key>PBXProjectModuleLabel</key>
- <string></string>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {781, 212}}</string>
- <key>RubberWindowFrame</key>
- <string>150 310 781 470 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>781pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>212pt</string>
- </dict>
- <dict>
- <key>BecomeActive</key>
- <true/>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528E0623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string>Project Find</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 217}, {781, 212}}</string>
- <key>RubberWindowFrame</key>
- <string>150 310 781 470 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXProjectFindModule</string>
- <key>Proportion</key>
- <string>212pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>429pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Project Find</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXProjectFindModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>1C530D57069F1CE1000CFCEE</string>
- <string>7AE5BE280CC3917A00125D43</string>
- <string>7AE5BE290CC3917A00125D43</string>
- <string>1CDD528C0622207200134675</string>
- <string>1CD0528E0623707200166675</string>
- </array>
- <key>WindowString</key>
- <string>150 310 781 470 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1C530D57069F1CE1000CFCEE</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>MENUSEPARATOR</string>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.debuggerConsole</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1C78EAAC065D492600B07095</string>
- <key>PBXProjectModuleLabel</key>
- <string>Debugger Console</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {440, 358}}</string>
- <key>RubberWindowFrame</key>
- <string>650 41 440 400 0 0 1280 1002 </string>
- </dict>
- <key>Module</key>
- <string>PBXDebugCLIModule</string>
- <key>Proportion</key>
- <string>358pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>358pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Debugger Console</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXDebugCLIModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>1</integer>
- <key>TableOfContents</key>
- <array>
- <string>1C78EAAD065D492600B07095</string>
- <string>1C78EAAE065D492600B07095</string>
- <string>1C78EAAC065D492600B07095</string>
- </array>
- <key>WindowString</key>
- <string>650 41 440 400 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.run</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>LauncherConfigVersion</key>
- <string>3</string>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528B0623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string>Run</string>
- <key>Runner</key>
- <dict>
- <key>HorizontalSplitView</key>
- <dict>
- <key>_collapsingFrameDimension</key>
- <real>0.0</real>
- <key>_indexOfCollapsedView</key>
- <integer>0</integer>
- <key>_percentageOfCollapsedView</key>
- <real>0.0</real>
- <key>isCollapsed</key>
- <string>yes</string>
- <key>sizes</key>
- <array>
- <string>{{0, 0}, {493, 167}}</string>
- <string>{{0, 176}, {493, 267}}</string>
- </array>
- </dict>
- <key>VerticalSplitView</key>
- <dict>
- <key>_collapsingFrameDimension</key>
- <real>0.0</real>
- <key>_indexOfCollapsedView</key>
- <integer>0</integer>
- <key>_percentageOfCollapsedView</key>
- <real>0.0</real>
- <key>isCollapsed</key>
- <string>yes</string>
- <key>sizes</key>
- <array>
- <string>{{0, 0}, {405, 443}}</string>
- <string>{{414, 0}, {514, 443}}</string>
- </array>
- </dict>
- </dict>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {460, 159}}</string>
- <key>RubberWindowFrame</key>
- <string>316 696 459 200 0 0 1280 1002 </string>
- </dict>
- <key>Module</key>
- <string>PBXRunSessionModule</string>
- <key>Proportion</key>
- <string>159pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>159pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Run Log</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXRunSessionModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>1</integer>
- <key>TableOfContents</key>
- <array>
- <string>1C0AD2B3069F1EA900FABCE6</string>
- <string>1C0AD2B4069F1EA900FABCE6</string>
- <string>1CD0528B0623707200166675</string>
- <string>1C0AD2B5069F1EA900FABCE6</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.run</string>
- <key>WindowString</key>
- <string>316 696 459 200 0 0 1280 1002 </string>
- <key>WindowToolGUID</key>
- <string>1C0AD2B3069F1EA900FABCE6</string>
- <key>WindowToolIsVisible</key>
- <integer>0</integer>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.scm</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1C78EAB2065D492600B07095</string>
- <key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1C78EAB3065D492600B07095</string>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <integer>1</integer>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {452, 0}}</string>
- <key>RubberWindowFrame</key>
- <string>743 379 452 308 0 0 1280 1002 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>0pt</string>
- </dict>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD052920623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string>SCM</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>ConsoleFrame</key>
- <string>{{0, 259}, {452, 0}}</string>
- <key>Frame</key>
- <string>{{0, 7}, {452, 259}}</string>
- <key>RubberWindowFrame</key>
- <string>743 379 452 308 0 0 1280 1002 </string>
- <key>TableConfiguration</key>
- <array>
- <string>Status</string>
- <real>30</real>
- <string>FileName</string>
- <real>199</real>
- <string>Path</string>
- <real>197.09500122070312</real>
- </array>
- <key>TableFrame</key>
- <string>{{0, 0}, {452, 250}}</string>
- </dict>
- <key>Module</key>
- <string>PBXCVSModule</string>
- <key>Proportion</key>
- <string>262pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>266pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>SCM</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXCVSModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>1</integer>
- <key>TableOfContents</key>
- <array>
- <string>1C78EAB4065D492600B07095</string>
- <string>1C78EAB5065D492600B07095</string>
- <string>1C78EAB2065D492600B07095</string>
- <string>1CD052920623707200166675</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.scm</string>
- <key>WindowString</key>
- <string>743 379 452 308 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.breakpoints</string>
- <key>IsVertical</key>
- <integer>0</integer>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXBottomSmartGroupGIDs</key>
- <array>
- <string>1C77FABC04509CD000000102</string>
- </array>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Files</string>
- <key>PBXProjectStructureProvided</key>
- <string>no</string>
- <key>PBXSmartGroupTreeModuleColumnData</key>
- <dict>
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
- <array>
- <real>168</real>
- </array>
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
- <array>
- <string>MainColumn</string>
- </array>
- </dict>
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
- <dict>
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
- <array>
- <string>1C77FABC04509CD000000102</string>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
- <array>
- <array>
- <integer>0</integer>
- </array>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {168, 350}}</string>
- </dict>
- <key>PBXTopSmartGroupGIDs</key>
- <array/>
- <key>XCIncludePerspectivesSwitch</key>
- <integer>0</integer>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {185, 368}}</string>
- <key>GroupTreeTableConfiguration</key>
- <array>
- <string>MainColumn</string>
- <real>168</real>
- </array>
- <key>RubberWindowFrame</key>
- <string>315 424 744 409 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Proportion</key>
- <string>185pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CA1AED706398EBD00589147</string>
- <key>PBXProjectModuleLabel</key>
- <string>Detail</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{190, 0}, {554, 368}}</string>
- <key>RubberWindowFrame</key>
- <string>315 424 744 409 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>XCDetailModule</string>
- <key>Proportion</key>
- <string>554pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>368pt</string>
- </dict>
- </array>
- <key>MajorVersion</key>
- <integer>2</integer>
- <key>MinorVersion</key>
- <integer>0</integer>
- <key>Name</key>
- <string>Breakpoints</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXSmartGroupTreeModule</string>
- <string>XCDetailModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>1</integer>
- <key>TableOfContents</key>
- <array>
- <string>1CDDB66807F98D9800BB5817</string>
- <string>1CDDB66907F98D9800BB5817</string>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <string>1CA1AED706398EBD00589147</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.breakpoints</string>
- <key>WindowString</key>
- <string>315 424 744 409 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1CDDB66807F98D9800BB5817</string>
- <key>WindowToolIsVisible</key>
- <integer>1</integer>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.debugAnimator</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Debug Visualizer</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXNavigatorGroup</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>1</integer>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.debugAnimator</string>
- <key>WindowString</key>
- <string>100 100 700 500 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.bookmarks</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Module</key>
- <string>PBXBookmarksModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Bookmarks</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXBookmarksModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>0</integer>
- <key>WindowString</key>
- <string>538 42 401 187 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.classBrowser</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>OptionsSetName</key>
- <string>Hierarchy, all classes</string>
- <key>PBXProjectModuleGUID</key>
- <string>1CA6456E063B45B4001379D8</string>
- <key>PBXProjectModuleLabel</key>
- <string>Class Browser - NSObject</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>ClassesFrame</key>
- <string>{{0, 0}, {374, 96}}</string>
- <key>ClassesTreeTableConfiguration</key>
- <array>
- <string>PBXClassNameColumnIdentifier</string>
- <real>208</real>
- <string>PBXClassBookColumnIdentifier</string>
- <real>22</real>
- </array>
- <key>Frame</key>
- <string>{{0, 0}, {630, 331}}</string>
- <key>MembersFrame</key>
- <string>{{0, 105}, {374, 395}}</string>
- <key>MembersTreeTableConfiguration</key>
- <array>
- <string>PBXMemberTypeIconColumnIdentifier</string>
- <real>22</real>
- <string>PBXMemberNameColumnIdentifier</string>
- <real>216</real>
- <string>PBXMemberTypeColumnIdentifier</string>
- <real>97</real>
- <string>PBXMemberBookColumnIdentifier</string>
- <real>22</real>
- </array>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <integer>1</integer>
- <key>RubberWindowFrame</key>
- <string>385 179 630 352 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXClassBrowserModule</string>
- <key>Proportion</key>
- <string>332pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>332pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Class Browser</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXClassBrowserModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <integer>0</integer>
- <key>TableOfContents</key>
- <array>
- <string>1C0AD2AF069F1E9B00FABCE6</string>
- <string>1C0AD2B0069F1E9B00FABCE6</string>
- <string>1CA6456E063B45B4001379D8</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.classbrowser</string>
- <key>WindowString</key>
- <string>385 179 630 352 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1C0AD2AF069F1E9B00FABCE6</string>
- <key>WindowToolIsVisible</key>
- <integer>0</integer>
- </dict>
- </array>
-</dict>
-</plist>
diff --git a/SkypePlugin.xcodeproj/mymacspace.mode1v3 b/SkypePlugin.xcodeproj/mymacspace.mode1v3
deleted file mode 100644
index 69594a1..0000000
--- a/SkypePlugin.xcodeproj/mymacspace.mode1v3
+++ /dev/null
@@ -1,1570 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>ActivePerspectiveName</key>
- <string>Project</string>
- <key>AllowedModules</key>
- <array>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Name</key>
- <string>Groups and Files Outline View</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Name</key>
- <string>Editor</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCTaskListModule</string>
- <key>Name</key>
- <string>Task List</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCDetailModule</string>
- <key>Name</key>
- <string>File and Smart Group Detail Viewer</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXBuildResultsModule</string>
- <key>Name</key>
- <string>Detailed Build Results Viewer</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXProjectFindModule</string>
- <key>Name</key>
- <string>Project Batch Find Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCProjectFormatConflictsModule</string>
- <key>Name</key>
- <string>Project Format Conflicts List</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXBookmarksModule</string>
- <key>Name</key>
- <string>Bookmarks Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXClassBrowserModule</string>
- <key>Name</key>
- <string>Class Browser</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXCVSModule</string>
- <key>Name</key>
- <string>Source Code Control Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXDebugBreakpointsModule</string>
- <key>Name</key>
- <string>Debug Breakpoints Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCDockableInspector</string>
- <key>Name</key>
- <string>Inspector</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>PBXOpenQuicklyModule</string>
- <key>Name</key>
- <string>Open Quickly Tool</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXDebugSessionModule</string>
- <key>Name</key>
- <string>Debugger</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>1</string>
- <key>Module</key>
- <string>PBXDebugCLIModule</string>
- <key>Name</key>
- <string>Debug Console</string>
- </dict>
- <dict>
- <key>BundleLoadPath</key>
- <string></string>
- <key>MaxInstances</key>
- <string>n</string>
- <key>Module</key>
- <string>XCSnapshotModule</string>
- <key>Name</key>
- <string>Snapshots Tool</string>
- </dict>
- </array>
- <key>Description</key>
- <string>DefaultDescriptionKey</string>
- <key>DockingSystemVisible</key>
- <false/>
- <key>Extension</key>
- <string>mode1v3</string>
- <key>FavBarConfig</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A06CD840CD6AD0E00CBDAE6</string>
- <key>XCBarModuleItemNames</key>
- <dict/>
- <key>XCBarModuleItems</key>
- <array/>
- </dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>com.apple.perspectives.project.mode1v3</string>
- <key>MajorVersion</key>
- <integer>33</integer>
- <key>MinorVersion</key>
- <integer>0</integer>
- <key>Name</key>
- <string>Default</string>
- <key>Notifications</key>
- <array/>
- <key>OpenEditors</key>
- <array/>
- <key>PerspectiveWidths</key>
- <array>
- <integer>-1</integer>
- <integer>-1</integer>
- </array>
- <key>Perspectives</key>
- <array>
- <dict>
- <key>ChosenToolbarItems</key>
- <array>
- <string>active-combo-popup</string>
- <string>action</string>
- <string>NSToolbarFlexibleSpaceItem</string>
- <string>debugger-enable-breakpoints</string>
- <string>build-and-go</string>
- <string>com.apple.ide.PBXToolbarStopButton</string>
- <string>get-info</string>
- <string>NSToolbarFlexibleSpaceItem</string>
- <string>com.apple.pbx.toolbar.searchfield</string>
- </array>
- <key>ControllerClassBaseName</key>
- <string></string>
- <key>IconName</key>
- <string>WindowOfProjectWithEditor</string>
- <key>Identifier</key>
- <string>perspective.project</string>
- <key>IsVertical</key>
- <false/>
- <key>Layout</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <true/>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXBottomSmartGroupGIDs</key>
- <array>
- <string>1C37FBAC04509CD000000102</string>
- <string>1C37FAAC04509CD000000102</string>
- <string>1C37FABC05509CD000000102</string>
- <string>1C37FABC05539CD112110102</string>
- <string>E2644B35053B69B200211256</string>
- <string>1C37FABC04509CD000100104</string>
- <string>1CC0EA4004350EF90044410B</string>
- <string>1CC0EA4004350EF90041110B</string>
- </array>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Files</string>
- <key>PBXProjectStructureProvided</key>
- <string>yes</string>
- <key>PBXSmartGroupTreeModuleColumnData</key>
- <dict>
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
- <array>
- <real>323</real>
- </array>
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
- <array>
- <string>MainColumn</string>
- </array>
- </dict>
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
- <dict>
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
- <array>
- <string>089C166AFE841209C02AAC07</string>
- <string>7A629DBC0CC375410064C5C6</string>
- <string>08FB77AFFE84173DC02AAC07</string>
- <string>32C88E010371C26100C91783</string>
- <string>089C167CFE841241C02AAC07</string>
- <string>089C1671FE841209C02AAC07</string>
- <string>1058C7ACFEA557BF11CA2CBB</string>
- <string>1058C7AEFEA557BF11CA2CBB</string>
- <string>19C28FB8FE9D52D311CA2CBB</string>
- <string>8D5B49B6048680CD000E48DA</string>
- <string>1C37FBAC04509CD000000102</string>
- <string>1CC0EA4004350EF90044410B</string>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
- <array>
- <array>
- <integer>28</integer>
- <integer>27</integer>
- <integer>0</integer>
- </array>
- <array>
- <integer>29</integer>
- <integer>27</integer>
- <integer>0</integer>
- </array>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 188}, {323, 518}}</string>
- </dict>
- <key>PBXTopSmartGroupGIDs</key>
- <array/>
- <key>XCIncludePerspectivesSwitch</key>
- <true/>
- <key>XCSharingToken</key>
- <string>com.apple.Xcode.GFSharingToken</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {340, 536}}</string>
- <key>GroupTreeTableConfiguration</key>
- <array>
- <string>MainColumn</string>
- <real>323</real>
- </array>
- <key>RubberWindowFrame</key>
- <string>660 75 1198 577 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Proportion</key>
- <string>340pt</string>
- </dict>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20306471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>PurpleSkypeAccount.m</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20406471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>PurpleSkypeAccount.m</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>7A028279124CC2A900601D8E</string>
- <key>history</key>
- <array>
- <string>7A3BAFE40CD7DEF900B7D754</string>
- <string>7A95A3130CF2E5DE0047ECA1</string>
- <string>7A95A3350CF2EA5C0047ECA1</string>
- <string>7A0A7A3A0D4852FC0003B3EA</string>
- <string>7A637E340E1AEF6E00290ECE</string>
- <string>7A637ED80E1B048F00290ECE</string>
- <string>7A637EDD0E1B048F00290ECE</string>
- <string>7A637EDE0E1B048F00290ECE</string>
- <string>7A637F330E1B0B0C00290ECE</string>
- <string>7A637F340E1B0B0C00290ECE</string>
- <string>7A637F360E1B0B0C00290ECE</string>
- <string>7A6381330E37FC1700290ECE</string>
- <string>7AB5A8900E51246F0097BFB4</string>
- <string>7AB5A8BC0E52D2920097BFB4</string>
- <string>7A9A688F0E7BD5AB00A443F1</string>
- <string>7AC7F51D0F44A21C0013E7C0</string>
- <string>7A48DE5E0F8092F100144F0F</string>
- <string>7A48DE750F80A0FE00144F0F</string>
- <string>7A48DE9B0F81D0BD00144F0F</string>
- <string>7A48E1EF0FB3168E00144F0F</string>
- <string>7A48E2780FB31F6E00144F0F</string>
- <string>7A48E2940FB3209600144F0F</string>
- <string>7A48E2EB1014728D00144F0F</string>
- <string>7A48E2F01014728D00144F0F</string>
- <string>7A48E2F11014728D00144F0F</string>
- <string>7A48E2F41014728D00144F0F</string>
- <string>7A48E2F61014728D00144F0F</string>
- <string>7A48E2FB1014728D00144F0F</string>
- <string>7A48E2FC1014728D00144F0F</string>
- <string>7A48E2FD1014728D00144F0F</string>
- <string>7A65016D1021B36600CA0257</string>
- <string>7A6501831021B9B700CA0257</string>
- <string>7A6FCC97103D5C9000D8926C</string>
- <string>7A6FCC99103D5C9000D8926C</string>
- <string>7A6FCC9B103D5C9000D8926C</string>
- <string>7A6FCC9C103D5C9000D8926C</string>
- <string>7A6FCC9D103D5C9000D8926C</string>
- <string>7A04D9A210622142003A1D13</string>
- <string>7A04D9A710622142003A1D13</string>
- <string>7A04D9A810622142003A1D13</string>
- <string>7A04D9A910622142003A1D13</string>
- <string>7A04DA111062259B003A1D13</string>
- <string>7A04DA55106232DE003A1D13</string>
- <string>7A04DA58106232DE003A1D13</string>
- <string>7A04DA5B106232DE003A1D13</string>
- <string>7A04DA7010623771003A1D13</string>
- <string>7A1F47F41108102A0057D2EC</string>
- <string>7A3C9A8B113D001C00C35C57</string>
- <string>7A3C9A8C113D001C00C35C57</string>
- <string>7A3C9A8D113D001C00C35C57</string>
- <string>7A6880DF117C9E7F00172604</string>
- <string>7A6880E6117C9E7F00172604</string>
- <string>7AE0BBAE120E108F00992317</string>
- <string>7A0282431246341400601D8E</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {853, 0}}</string>
- <key>RubberWindowFrame</key>
- <string>660 75 1198 577 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>0pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20306471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>skype-small.png</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20406471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>skype-small.png</string>
- <key>_historyCapacity</key>
- <integer>0</integer>
- <key>bookmark</key>
- <string>7A02827A124CC2A900601D8E</string>
- <key>history</key>
- <array>
- <string>7A3BAFE40CD7DEF900B7D754</string>
- <string>7A95A3130CF2E5DE0047ECA1</string>
- <string>7A95A3350CF2EA5C0047ECA1</string>
- <string>7A0A7A3A0D4852FC0003B3EA</string>
- <string>7A637E340E1AEF6E00290ECE</string>
- <string>7A637ED80E1B048F00290ECE</string>
- <string>7A637EDA0E1B048F00290ECE</string>
- <string>7A637EDD0E1B048F00290ECE</string>
- <string>7A637EDE0E1B048F00290ECE</string>
- <string>7A637F330E1B0B0C00290ECE</string>
- <string>7A637F340E1B0B0C00290ECE</string>
- <string>7A637F360E1B0B0C00290ECE</string>
- <string>7A6381330E37FC1700290ECE</string>
- <string>7AB5A8900E51246F0097BFB4</string>
- <string>7AB5A8BC0E52D2920097BFB4</string>
- <string>7A9654D50F0F7B7300B44F05</string>
- <string>7A9654D70F0F7B7300B44F05</string>
- <string>7A9654D80F0F7B7300B44F05</string>
- <string>7A9654DA0F0F7B7300B44F05</string>
- <string>7A9654DE0F0F7B7300B44F05</string>
- <string>7AC7F46F0F25B5A40013E7C0</string>
- <string>7AC7F4920F25B6F40013E7C0</string>
- <string>7AC7F51D0F44A21C0013E7C0</string>
- <string>7A48DDFC0F7B8D6100144F0F</string>
- <string>7A48DE370F808D2600144F0F</string>
- <string>7A48DE380F808D2600144F0F</string>
- <string>7A48DE490F80916400144F0F</string>
- <string>7A48DE5E0F8092F100144F0F</string>
- <string>7A48DE750F80A0FE00144F0F</string>
- <string>7A48DED10F81EB9E00144F0F</string>
- <string>7A48DED30F81EB9E00144F0F</string>
- <string>7A48E0160F8A25EF00144F0F</string>
- <string>7A3C9A94113D001C00C35C57</string>
- <string>7A553B58121D650100635123</string>
- <string>7A553B59121D650100635123</string>
- <string>7A553B5C121D650100635123</string>
- <string>7A553B7B121D6C6F00635123</string>
- <string>7AD402061228F08500A40EBA</string>
- <string>7AD402071228F08500A40EBA</string>
- <string>7AD404B3122A4BA600A40EBA</string>
- <string>7AD404E7122A7D3F00A40EBA</string>
- <string>7AD404E8122A7D3F00A40EBA</string>
- <string>7AD404EA122A7D3F00A40EBA</string>
- <string>7A0282441246341400601D8E</string>
- <string>7A0282451246341400601D8E</string>
- <string>7A02826E1246353100601D8E</string>
- <string>7A02826F1246353100601D8E</string>
- </array>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 5}, {853, 425}}</string>
- <key>RubberWindowFrame</key>
- <string>660 75 1198 577 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>425pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B20506471E060097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Detail</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 435}, {853, 101}}</string>
- <key>RubberWindowFrame</key>
- <string>660 75 1198 577 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>XCDetailModule</string>
- <key>Proportion</key>
- <string>101pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>853pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Project</string>
- <key>ServiceClasses</key>
- <array>
- <string>XCModuleDock</string>
- <string>PBXSmartGroupTreeModule</string>
- <string>XCModuleDock</string>
- <string>PBXNavigatorGroup</string>
- <string>PBXNavigatorGroup</string>
- <string>XCDetailModule</string>
- </array>
- <key>TableOfContents</key>
- <array>
- <string>7A0282711246353100601D8E</string>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <string>7A0282721246353100601D8E</string>
- <string>1CE0B20306471E060097A5F4</string>
- <string>1CE0B20306471E060097A5F4</string>
- <string>1CE0B20506471E060097A5F4</string>
- </array>
- <key>ToolbarConfigUserDefaultsMinorVersion</key>
- <string>2</string>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.defaultV3</string>
- </dict>
- <dict>
- <key>ControllerClassBaseName</key>
- <string></string>
- <key>IconName</key>
- <string>WindowOfProject</string>
- <key>Identifier</key>
- <string>perspective.morph</string>
- <key>IsVertical</key>
- <false/>
- <key>Layout</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXBottomSmartGroupGIDs</key>
- <array>
- <string>1C37FBAC04509CD000000102</string>
- <string>1C37FAAC04509CD000000102</string>
- <string>1C08E77C0454961000C914BD</string>
- <string>1C37FABC05509CD000000102</string>
- <string>1C37FABC05539CD112110102</string>
- <string>E2644B35053B69B200211256</string>
- <string>1C37FABC04509CD000100104</string>
- <string>1CC0EA4004350EF90044410B</string>
- <string>1CC0EA4004350EF90041110B</string>
- </array>
- <key>PBXProjectModuleGUID</key>
- <string>11E0B1FE06471DED0097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Files</string>
- <key>PBXProjectStructureProvided</key>
- <string>yes</string>
- <key>PBXSmartGroupTreeModuleColumnData</key>
- <dict>
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
- <array>
- <real>186</real>
- </array>
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
- <array>
- <string>MainColumn</string>
- </array>
- </dict>
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
- <dict>
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
- <array>
- <string>29B97314FDCFA39411CA2CEA</string>
- <string>1C37FABC05509CD000000102</string>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
- <array>
- <array>
- <integer>0</integer>
- </array>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {186, 337}}</string>
- </dict>
- <key>PBXTopSmartGroupGIDs</key>
- <array/>
- <key>XCIncludePerspectivesSwitch</key>
- <integer>1</integer>
- <key>XCSharingToken</key>
- <string>com.apple.Xcode.GFSharingToken</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {203, 355}}</string>
- <key>GroupTreeTableConfiguration</key>
- <array>
- <string>MainColumn</string>
- <real>186</real>
- </array>
- <key>RubberWindowFrame</key>
- <string>373 269 690 397 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Morph</string>
- <key>PreferredWidth</key>
- <integer>300</integer>
- <key>ServiceClasses</key>
- <array>
- <string>XCModuleDock</string>
- <string>PBXSmartGroupTreeModule</string>
- </array>
- <key>TableOfContents</key>
- <array>
- <string>11E0B1FE06471DED0097A5F4</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.default.shortV3</string>
- </dict>
- </array>
- <key>PerspectivesBarVisible</key>
- <false/>
- <key>ShelfIsVisible</key>
- <false/>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TimeStamp</key>
- <real>0.0</real>
- <key>ToolbarDisplayMode</key>
- <integer>1</integer>
- <key>ToolbarIsVisible</key>
- <true/>
- <key>ToolbarSizeMode</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Perspectives</string>
- <key>UpdateMessage</key>
- <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
- <key>WindowJustification</key>
- <integer>5</integer>
- <key>WindowOrderList</key>
- <array>
- <string>7A06CD850CD6AD0E00CBDAE6</string>
- <string>/Users/mymacspace/SkypePlugin/SkypePlugin.xcodeproj</string>
- </array>
- <key>WindowString</key>
- <string>660 75 1198 577 0 0 1440 878 </string>
- <key>WindowToolsV3</key>
- <array>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.build</string>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528F0623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string></string>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {1230, 253}}</string>
- <key>RubberWindowFrame</key>
- <string>105 336 1230 535 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>253pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>XCMainBuildResultsModuleGUID</string>
- <key>PBXProjectModuleLabel</key>
- <string>Build Results</string>
- <key>XCBuildResultsTrigger_Collapse</key>
- <integer>1021</integer>
- <key>XCBuildResultsTrigger_Open</key>
- <integer>1011</integer>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 258}, {1230, 236}}</string>
- <key>RubberWindowFrame</key>
- <string>105 336 1230 535 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXBuildResultsModule</string>
- <key>Proportion</key>
- <string>236pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>494pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Build Results</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXBuildResultsModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>7A06CD850CD6AD0E00CBDAE6</string>
- <string>7A0282731246353100601D8E</string>
- <string>1CD0528F0623707200166675</string>
- <string>XCMainBuildResultsModuleGUID</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.buildV3</string>
- <key>WindowString</key>
- <string>105 336 1230 535 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>7A06CD850CD6AD0E00CBDAE6</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.debugger</string>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>Debugger</key>
- <dict>
- <key>HorizontalSplitView</key>
- <dict>
- <key>_collapsingFrameDimension</key>
- <real>0.0</real>
- <key>_indexOfCollapsedView</key>
- <integer>0</integer>
- <key>_percentageOfCollapsedView</key>
- <real>0.0</real>
- <key>isCollapsed</key>
- <string>yes</string>
- <key>sizes</key>
- <array>
- <string>{{0, 0}, {316, 201}}</string>
- <string>{{316, 0}, {378, 201}}</string>
- </array>
- </dict>
- <key>VerticalSplitView</key>
- <dict>
- <key>_collapsingFrameDimension</key>
- <real>0.0</real>
- <key>_indexOfCollapsedView</key>
- <integer>0</integer>
- <key>_percentageOfCollapsedView</key>
- <real>0.0</real>
- <key>isCollapsed</key>
- <string>yes</string>
- <key>sizes</key>
- <array>
- <string>{{0, 0}, {694, 201}}</string>
- <string>{{0, 201}, {694, 180}}</string>
- </array>
- </dict>
- </dict>
- <key>LauncherConfigVersion</key>
- <string>8</string>
- <key>PBXProjectModuleGUID</key>
- <string>1C162984064C10D400B95A72</string>
- <key>PBXProjectModuleLabel</key>
- <string>Debug - GLUTExamples (Underwater)</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>DebugConsoleVisible</key>
- <string>None</string>
- <key>DebugConsoleWindowFrame</key>
- <string>{{200, 200}, {500, 300}}</string>
- <key>DebugSTDIOWindowFrame</key>
- <string>{{200, 200}, {500, 300}}</string>
- <key>Frame</key>
- <string>{{0, 0}, {694, 381}}</string>
- <key>PBXDebugSessionStackFrameViewKey</key>
- <dict>
- <key>DebugVariablesTableConfiguration</key>
- <array>
- <string>Name</string>
- <real>120</real>
- <string>Value</string>
- <real>85</real>
- <string>Summary</string>
- <real>148</real>
- </array>
- <key>Frame</key>
- <string>{{316, 0}, {378, 201}}</string>
- <key>RubberWindowFrame</key>
- <string>274 340 694 422 0 0 1440 878 </string>
- </dict>
- <key>RubberWindowFrame</key>
- <string>274 340 694 422 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXDebugSessionModule</string>
- <key>Proportion</key>
- <string>381pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>381pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Debugger</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXDebugSessionModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>1CD10A99069EF8BA00B06720</string>
- <string>7AC7F3ED0F21F4310013E7C0</string>
- <string>1C162984064C10D400B95A72</string>
- <string>7AC7F3EE0F21F4310013E7C0</string>
- <string>7AC7F3EF0F21F4310013E7C0</string>
- <string>7AC7F3F00F21F4310013E7C0</string>
- <string>7AC7F3F10F21F4310013E7C0</string>
- <string>7AC7F3F20F21F4310013E7C0</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.debugV3</string>
- <key>WindowString</key>
- <string>274 340 694 422 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1CD10A99069EF8BA00B06720</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.find</string>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CDD528C0622207200134675</string>
- <key>PBXProjectModuleLabel</key>
- <string>SkypePlugin.m</string>
- <key>StatusBarVisibility</key>
- <true/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {781, 212}}</string>
- <key>RubberWindowFrame</key>
- <string>150 310 781 470 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>781pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>212pt</string>
- </dict>
- <dict>
- <key>BecomeActive</key>
- <true/>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD0528E0623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string>Project Find</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 217}, {781, 212}}</string>
- <key>RubberWindowFrame</key>
- <string>150 310 781 470 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXProjectFindModule</string>
- <key>Proportion</key>
- <string>212pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>429pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Project Find</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXProjectFindModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>1C530D57069F1CE1000CFCEE</string>
- <string>7A48E3241014728D00144F0F</string>
- <string>7A48E3251014728D00144F0F</string>
- <string>1CDD528C0622207200134675</string>
- <string>1CD0528E0623707200166675</string>
- </array>
- <key>WindowString</key>
- <string>150 310 781 470 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1C530D57069F1CE1000CFCEE</string>
- <key>WindowToolIsVisible</key>
- <true/>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>MENUSEPARATOR</string>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.debuggerConsole</string>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <true/>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1C78EAAC065D492600B07095</string>
- <key>PBXProjectModuleLabel</key>
- <string>Debugger Console</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {440, 358}}</string>
- <key>RubberWindowFrame</key>
- <string>102 208 440 400 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXDebugCLIModule</string>
- <key>Proportion</key>
- <string>358pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>359pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Debugger Console</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXDebugCLIModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>1C78EAAD065D492600B07095</string>
- <string>7AC7F3F70F21F4500013E7C0</string>
- <string>1C78EAAC065D492600B07095</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.consoleV3</string>
- <key>WindowString</key>
- <string>102 208 440 400 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1C78EAAD065D492600B07095</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.snapshots</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Module</key>
- <string>XCSnapshotModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Snapshots</string>
- <key>ServiceClasses</key>
- <array>
- <string>XCSnapshotModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <string>Yes</string>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.snapshots</string>
- <key>WindowString</key>
- <string>315 824 300 550 0 0 1440 878 </string>
- <key>WindowToolIsVisible</key>
- <string>Yes</string>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.scm</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1C78EAB2065D492600B07095</string>
- <key>PBXProjectModuleLabel</key>
- <string>&lt;No Editor&gt;</string>
- <key>PBXSplitModuleInNavigatorKey</key>
- <dict>
- <key>Split0</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1C78EAB3065D492600B07095</string>
- </dict>
- <key>SplitCount</key>
- <string>1</string>
- </dict>
- <key>StatusBarVisibility</key>
- <integer>1</integer>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {452, 0}}</string>
- <key>RubberWindowFrame</key>
- <string>743 379 452 308 0 0 1280 1002 </string>
- </dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>0pt</string>
- </dict>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CD052920623707200166675</string>
- <key>PBXProjectModuleLabel</key>
- <string>SCM</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>ConsoleFrame</key>
- <string>{{0, 259}, {452, 0}}</string>
- <key>Frame</key>
- <string>{{0, 7}, {452, 259}}</string>
- <key>RubberWindowFrame</key>
- <string>743 379 452 308 0 0 1280 1002 </string>
- <key>TableConfiguration</key>
- <array>
- <string>Status</string>
- <real>30</real>
- <string>FileName</string>
- <real>199</real>
- <string>Path</string>
- <real>197.09500122070312</real>
- </array>
- <key>TableFrame</key>
- <string>{{0, 0}, {452, 250}}</string>
- </dict>
- <key>Module</key>
- <string>PBXCVSModule</string>
- <key>Proportion</key>
- <string>262pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>266pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>SCM</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXCVSModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>1C78EAB4065D492600B07095</string>
- <string>1C78EAB5065D492600B07095</string>
- <string>1C78EAB2065D492600B07095</string>
- <string>1CD052920623707200166675</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.scm</string>
- <key>WindowString</key>
- <string>743 379 452 308 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.breakpoints</string>
- <key>IsVertical</key>
- <false/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <true/>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXBottomSmartGroupGIDs</key>
- <array>
- <string>1C77FABC04509CD000000102</string>
- </array>
- <key>PBXProjectModuleGUID</key>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <key>PBXProjectModuleLabel</key>
- <string>Files</string>
- <key>PBXProjectStructureProvided</key>
- <string>no</string>
- <key>PBXSmartGroupTreeModuleColumnData</key>
- <dict>
- <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
- <array>
- <real>168</real>
- </array>
- <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
- <array>
- <string>MainColumn</string>
- </array>
- </dict>
- <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
- <dict>
- <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
- <array>
- <string>1C77FABC04509CD000000102</string>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
- <array>
- <array>
- <integer>0</integer>
- </array>
- </array>
- <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
- <string>{{0, 0}, {168, 350}}</string>
- </dict>
- <key>PBXTopSmartGroupGIDs</key>
- <array/>
- <key>XCIncludePerspectivesSwitch</key>
- <false/>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {185, 368}}</string>
- <key>GroupTreeTableConfiguration</key>
- <array>
- <string>MainColumn</string>
- <real>168</real>
- </array>
- <key>RubberWindowFrame</key>
- <string>315 424 744 409 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXSmartGroupTreeModule</string>
- <key>Proportion</key>
- <string>185pt</string>
- </dict>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>1CA1AED706398EBD00589147</string>
- <key>PBXProjectModuleLabel</key>
- <string>Detail</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{190, 0}, {554, 368}}</string>
- <key>RubberWindowFrame</key>
- <string>315 424 744 409 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>XCDetailModule</string>
- <key>Proportion</key>
- <string>554pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>368pt</string>
- </dict>
- </array>
- <key>MajorVersion</key>
- <integer>3</integer>
- <key>MinorVersion</key>
- <integer>0</integer>
- <key>Name</key>
- <string>Breakpoints</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXSmartGroupTreeModule</string>
- <string>XCDetailModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>7A26AF270CE2ACF00011676B</string>
- <string>7A26AF280CE2ACF00011676B</string>
- <string>1CE0B1FE06471DED0097A5F4</string>
- <string>1CA1AED706398EBD00589147</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.breakpointsV3</string>
- <key>WindowString</key>
- <string>315 424 744 409 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>7A26AF270CE2ACF00011676B</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.debugAnimator</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Module</key>
- <string>PBXNavigatorGroup</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Debug Visualizer</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXNavigatorGroup</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.debugAnimatorV3</string>
- <key>WindowString</key>
- <string>100 100 700 500 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.bookmarks</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Module</key>
- <string>PBXBookmarksModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Bookmarks</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXBookmarksModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <false/>
- <key>WindowString</key>
- <string>538 42 401 187 0 0 1280 1002 </string>
- </dict>
- <dict>
- <key>Identifier</key>
- <string>windowTool.projectFormatConflicts</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>Module</key>
- <string>XCProjectFormatConflictsModule</string>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>100%</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Project Format Conflicts</string>
- <key>ServiceClasses</key>
- <array>
- <string>XCProjectFormatConflictsModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <false/>
- <key>WindowContentMinSize</key>
- <string>450 300</string>
- <key>WindowString</key>
- <string>50 850 472 307 0 0 1440 877</string>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.classBrowser</string>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>BecomeActive</key>
- <integer>1</integer>
- <key>ContentConfiguration</key>
- <dict>
- <key>OptionsSetName</key>
- <string>Hierarchy, all classes</string>
- <key>PBXProjectModuleGUID</key>
- <string>1CA6456E063B45B4001379D8</string>
- <key>PBXProjectModuleLabel</key>
- <string>Class Browser - NSObject</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>ClassesFrame</key>
- <string>{{0, 0}, {374, 96}}</string>
- <key>ClassesTreeTableConfiguration</key>
- <array>
- <string>PBXClassNameColumnIdentifier</string>
- <real>208</real>
- <string>PBXClassBookColumnIdentifier</string>
- <real>22</real>
- </array>
- <key>Frame</key>
- <string>{{0, 0}, {630, 331}}</string>
- <key>MembersFrame</key>
- <string>{{0, 105}, {374, 395}}</string>
- <key>MembersTreeTableConfiguration</key>
- <array>
- <string>PBXMemberTypeIconColumnIdentifier</string>
- <real>22</real>
- <string>PBXMemberNameColumnIdentifier</string>
- <real>216</real>
- <string>PBXMemberTypeColumnIdentifier</string>
- <real>97</real>
- <string>PBXMemberBookColumnIdentifier</string>
- <real>22</real>
- </array>
- <key>PBXModuleWindowStatusBarHidden2</key>
- <integer>1</integer>
- <key>RubberWindowFrame</key>
- <string>385 179 630 352 0 0 1440 878 </string>
- </dict>
- <key>Module</key>
- <string>PBXClassBrowserModule</string>
- <key>Proportion</key>
- <string>332pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>332pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Class Browser</string>
- <key>ServiceClasses</key>
- <array>
- <string>PBXClassBrowserModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <false/>
- <key>TableOfContents</key>
- <array>
- <string>1C0AD2AF069F1E9B00FABCE6</string>
- <string>1C0AD2B0069F1E9B00FABCE6</string>
- <string>1CA6456E063B45B4001379D8</string>
- </array>
- <key>ToolbarConfiguration</key>
- <string>xcode.toolbar.config.classbrowser</string>
- <key>WindowString</key>
- <string>385 179 630 352 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>1C0AD2AF069F1E9B00FABCE6</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- <dict>
- <key>FirstTimeWindowDisplayed</key>
- <false/>
- <key>Identifier</key>
- <string>windowTool.refactoring</string>
- <key>IncludeInToolsMenu</key>
- <false/>
- <key>IsVertical</key>
- <true/>
- <key>Layout</key>
- <array>
- <dict>
- <key>Dock</key>
- <array>
- <dict>
- <key>ContentConfiguration</key>
- <dict>
- <key>PBXProjectModuleGUID</key>
- <string>7A4B3F0D116F51A20098AFD4</string>
- </dict>
- <key>GeometryConfiguration</key>
- <dict>
- <key>Frame</key>
- <string>{{0, 0}, {500, 315}}</string>
- <key>RubberWindowFrame</key>
- <string>156 431 500 356 0 0 1440 878 </string>
- <key>XCRefactoringSplitViewLowerHeight</key>
- <real>112</real>
- <key>XCRefactoringSplitViewTotalHeight</key>
- <real>232</real>
- </dict>
- <key>Module</key>
- <string>XCRefactoringModule</string>
- <key>Proportion</key>
- <string>315pt</string>
- </dict>
- </array>
- <key>Proportion</key>
- <string>315pt</string>
- </dict>
- </array>
- <key>Name</key>
- <string>Refactoring</string>
- <key>ServiceClasses</key>
- <array>
- <string>XCRefactoringModule</string>
- </array>
- <key>StatusbarIsVisible</key>
- <true/>
- <key>TableOfContents</key>
- <array>
- <string>7A4B3F0E116F51A20098AFD4</string>
- <string>7A4B3F0F116F51A20098AFD4</string>
- <string>7A4B3F0D116F51A20098AFD4</string>
- </array>
- <key>WindowString</key>
- <string>156 431 500 356 0 0 1440 878 </string>
- <key>WindowToolGUID</key>
- <string>7A4B3F0E116F51A20098AFD4</string>
- <key>WindowToolIsVisible</key>
- <false/>
- </dict>
- </array>
-</dict>
-</plist>
diff --git a/SkypePlugin.xcodeproj/mymacspace.pbxuser b/SkypePlugin.xcodeproj/mymacspace.pbxuser
deleted file mode 100644
index a67008f..0000000
--- a/SkypePlugin.xcodeproj/mymacspace.pbxuser
+++ /dev/null
@@ -1,1685 +0,0 @@
-// !$*UTF8*$!
-{
- 089C1669FE841209C02AAC07 /* Project object */ = {
- activeBuildConfigurationName = Release;
- activeTarget = 8D5B49AC048680CD000E48DA /* SkypePlugin */;
- addToTargets = (
- 8D5B49AC048680CD000E48DA /* SkypePlugin */,
- );
- breakpoints = (
- 7A26AF130CE2AC880011676B /* skype_messaging_carbon.c:75 */,
- 7A26AF150CE2AC8B0011676B /* skype_messaging_carbon.c:97 */,
- 7A2912690D94AFDD006AF606 /* skype_messaging_carbon.c:227 */,
- 7A9654AF0F0F79D800B44F05 /* skype_events.c:139 */,
- 7AC7F3DB0F21F42A0013E7C0 /* PurpleSkypeService.m:127 */,
- );
- codeSenseManager = 7A6296310CC1B38C0064C5C6 /* Code sense */;
- perUserDictionary = {
- "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 20,
- 20,
- 198,
- 20,
- 99,
- 99,
- 29,
- 20,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXBreakpointsDataSource_ActionID,
- PBXBreakpointsDataSource_TypeID,
- PBXBreakpointsDataSource_BreakpointID,
- PBXBreakpointsDataSource_UseID,
- PBXBreakpointsDataSource_LocationID,
- PBXBreakpointsDataSource_ConditionID,
- PBXBreakpointsDataSource_IgnoreCountID,
- PBXBreakpointsDataSource_ContinueID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 200,
- 200,
- 588.58349609375,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXBookmarksDataSource_LocationID,
- PBXBookmarksDataSource_NameID,
- PBXBookmarksDataSource_CommentsID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 20,
- 300,
- 259.20849609375,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXErrorsWarningsDataSource_TypeID,
- PBXErrorsWarningsDataSource_MessageID,
- PBXErrorsWarningsDataSource_LocationID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 22,
- 300,
- 403,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXExecutablesDataSource_ActiveFlagID,
- PBXExecutablesDataSource_NameID,
- PBXExecutablesDataSource_CommentsID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = 1;
- PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 20,
- 614,
- 20,
- 48,
- 43,
- 43,
- 20,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXFileDataSource_FiletypeID,
- PBXFileDataSource_Filename_ColumnID,
- PBXFileDataSource_Built_ColumnID,
- PBXFileDataSource_ObjectSize_ColumnID,
- PBXFileDataSource_Errors_ColumnID,
- PBXFileDataSource_Warnings_ColumnID,
- PBXFileDataSource_Target_ColumnID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 200,
- 529.20849609375,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXFindDataSource_MessageID,
- PBXFindDataSource_LocationID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 16,
- 200,
- 50,
- 531.20849609375,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXSymbolsDataSource_SymbolTypeIconID,
- PBXSymbolsDataSource_SymbolNameID,
- PBXSymbolsDataSource_SymbolTypeID,
- PBXSymbolsDataSource_ReferenceNameID,
- );
- };
- PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 20,
- 20,
- 567,
- 20,
- 48,
- 43,
- 43,
- 20,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXFileDataSource_SCM_ColumnID,
- PBXFileDataSource_FiletypeID,
- PBXFileDataSource_Filename_ColumnID,
- PBXFileDataSource_Built_ColumnID,
- PBXFileDataSource_ObjectSize_ColumnID,
- PBXFileDataSource_Errors_ColumnID,
- PBXFileDataSource_Warnings_ColumnID,
- PBXFileDataSource_Target_ColumnID,
- );
- };
- PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
- PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
- PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
- PBXFileTableDataSourceColumnWidthsKey = (
- 20,
- 574,
- 60,
- 20,
- 48,
- 43,
- 43,
- );
- PBXFileTableDataSourceColumnsKey = (
- PBXFileDataSource_FiletypeID,
- PBXFileDataSource_Filename_ColumnID,
- PBXTargetDataSource_PrimaryAttribute,
- PBXFileDataSource_Built_ColumnID,
- PBXFileDataSource_ObjectSize_ColumnID,
- PBXFileDataSource_Errors_ColumnID,
- PBXFileDataSource_Warnings_ColumnID,
- );
- };
- PBXPerProjectTemplateStateSaveDate = 306591009;
- PBXWorkspaceStateSaveDate = 306591009;
- };
- perUserProjectItems = {
- 7A0282431246341400601D8E /* PBXTextBookmark */ = 7A0282431246341400601D8E /* PBXTextBookmark */;
- 7A0282441246341400601D8E /* PBXTextBookmark */ = 7A0282441246341400601D8E /* PBXTextBookmark */;
- 7A0282451246341400601D8E /* PBXTextBookmark */ = 7A0282451246341400601D8E /* PBXTextBookmark */;
- 7A02826E1246353100601D8E /* PBXTextBookmark */ = 7A02826E1246353100601D8E /* PBXTextBookmark */;
- 7A02826F1246353100601D8E /* PBXBookmark */ = 7A02826F1246353100601D8E /* PBXBookmark */;
- 7A028279124CC2A900601D8E /* PBXTextBookmark */ = 7A028279124CC2A900601D8E /* PBXTextBookmark */;
- 7A02827A124CC2A900601D8E /* PBXBookmark */ = 7A02827A124CC2A900601D8E /* PBXBookmark */;
- 7A04D9A210622142003A1D13 /* PBXTextBookmark */ = 7A04D9A210622142003A1D13 /* PBXTextBookmark */;
- 7A04D9A710622142003A1D13 /* PBXTextBookmark */ = 7A04D9A710622142003A1D13 /* PBXTextBookmark */;
- 7A04D9A810622142003A1D13 /* PBXTextBookmark */ = 7A04D9A810622142003A1D13 /* PBXTextBookmark */;
- 7A04D9A910622142003A1D13 /* PBXTextBookmark */ = 7A04D9A910622142003A1D13 /* PBXTextBookmark */;
- 7A04DA111062259B003A1D13 /* PBXTextBookmark */ = 7A04DA111062259B003A1D13 /* PBXTextBookmark */;
- 7A04DA55106232DE003A1D13 /* PBXTextBookmark */ = 7A04DA55106232DE003A1D13 /* PBXTextBookmark */;
- 7A04DA58106232DE003A1D13 /* PBXTextBookmark */ = 7A04DA58106232DE003A1D13 /* PBXTextBookmark */;
- 7A04DA5B106232DE003A1D13 /* PBXTextBookmark */ = 7A04DA5B106232DE003A1D13 /* PBXTextBookmark */;
- 7A04DA7010623771003A1D13 /* PBXTextBookmark */ = 7A04DA7010623771003A1D13 /* PBXTextBookmark */;
- 7A0A7A3A0D4852FC0003B3EA /* PBXTextBookmark */ = 7A0A7A3A0D4852FC0003B3EA /* PBXTextBookmark */;
- 7A1F47F41108102A0057D2EC /* PBXTextBookmark */ = 7A1F47F41108102A0057D2EC /* PBXTextBookmark */;
- 7A3BAFE40CD7DEF900B7D754 /* PBXTextBookmark */ = 7A3BAFE40CD7DEF900B7D754 /* PBXTextBookmark */;
- 7A3C9A8B113D001C00C35C57 /* PBXTextBookmark */ = 7A3C9A8B113D001C00C35C57 /* PBXTextBookmark */;
- 7A3C9A8C113D001C00C35C57 /* PBXTextBookmark */ = 7A3C9A8C113D001C00C35C57 /* PBXTextBookmark */;
- 7A3C9A8D113D001C00C35C57 /* PBXTextBookmark */ = 7A3C9A8D113D001C00C35C57 /* PBXTextBookmark */;
- 7A3C9A94113D001C00C35C57 /* PBXTextBookmark */ = 7A3C9A94113D001C00C35C57 /* PBXTextBookmark */;
- 7A48DDFC0F7B8D6100144F0F /* PBXTextBookmark */ = 7A48DDFC0F7B8D6100144F0F /* PBXTextBookmark */;
- 7A48DE370F808D2600144F0F /* PBXTextBookmark */ = 7A48DE370F808D2600144F0F /* PBXTextBookmark */;
- 7A48DE380F808D2600144F0F /* PBXTextBookmark */ = 7A48DE380F808D2600144F0F /* PBXTextBookmark */;
- 7A48DE490F80916400144F0F /* PBXTextBookmark */ = 7A48DE490F80916400144F0F /* PBXTextBookmark */;
- 7A48DE5E0F8092F100144F0F /* PBXTextBookmark */ = 7A48DE5E0F8092F100144F0F /* PBXTextBookmark */;
- 7A48DE750F80A0FE00144F0F /* PBXTextBookmark */ = 7A48DE750F80A0FE00144F0F /* PBXTextBookmark */;
- 7A48DE9B0F81D0BD00144F0F /* PBXTextBookmark */ = 7A48DE9B0F81D0BD00144F0F /* PBXTextBookmark */;
- 7A48DED10F81EB9E00144F0F /* PBXTextBookmark */ = 7A48DED10F81EB9E00144F0F /* PBXTextBookmark */;
- 7A48DED30F81EB9E00144F0F /* PBXTextBookmark */ = 7A48DED30F81EB9E00144F0F /* PBXTextBookmark */;
- 7A48E0160F8A25EF00144F0F /* PBXTextBookmark */ = 7A48E0160F8A25EF00144F0F /* PBXTextBookmark */;
- 7A48E1EF0FB3168E00144F0F /* PBXTextBookmark */ = 7A48E1EF0FB3168E00144F0F /* PBXTextBookmark */;
- 7A48E2780FB31F6E00144F0F /* PBXTextBookmark */ = 7A48E2780FB31F6E00144F0F /* PBXTextBookmark */;
- 7A48E2940FB3209600144F0F /* PBXTextBookmark */ = 7A48E2940FB3209600144F0F /* PBXTextBookmark */;
- 7A48E2EB1014728D00144F0F /* PBXTextBookmark */ = 7A48E2EB1014728D00144F0F /* PBXTextBookmark */;
- 7A48E2F01014728D00144F0F /* PBXTextBookmark */ = 7A48E2F01014728D00144F0F /* PBXTextBookmark */;
- 7A48E2F11014728D00144F0F /* PBXTextBookmark */ = 7A48E2F11014728D00144F0F /* PBXTextBookmark */;
- 7A48E2F41014728D00144F0F /* PBXTextBookmark */ = 7A48E2F41014728D00144F0F /* PBXTextBookmark */;
- 7A48E2F61014728D00144F0F /* PBXTextBookmark */ = 7A48E2F61014728D00144F0F /* PBXTextBookmark */;
- 7A48E2FB1014728D00144F0F /* PBXTextBookmark */ = 7A48E2FB1014728D00144F0F /* PBXTextBookmark */;
- 7A48E2FC1014728D00144F0F /* PBXTextBookmark */ = 7A48E2FC1014728D00144F0F /* PBXTextBookmark */;
- 7A48E2FD1014728D00144F0F /* PBXTextBookmark */ = 7A48E2FD1014728D00144F0F /* PBXTextBookmark */;
- 7A553B58121D650100635123 /* PBXTextBookmark */ = 7A553B58121D650100635123 /* PBXTextBookmark */;
- 7A553B59121D650100635123 /* PBXTextBookmark */ = 7A553B59121D650100635123 /* PBXTextBookmark */;
- 7A553B5C121D650100635123 /* PBXTextBookmark */ = 7A553B5C121D650100635123 /* PBXTextBookmark */;
- 7A553B7B121D6C6F00635123 /* PBXTextBookmark */ = 7A553B7B121D6C6F00635123 /* PBXTextBookmark */;
- 7A637E340E1AEF6E00290ECE /* PBXTextBookmark */ = 7A637E340E1AEF6E00290ECE /* PBXTextBookmark */;
- 7A637ED80E1B048F00290ECE /* PBXTextBookmark */ = 7A637ED80E1B048F00290ECE /* PBXTextBookmark */;
- 7A637EDA0E1B048F00290ECE /* PBXTextBookmark */ = 7A637EDA0E1B048F00290ECE /* PBXTextBookmark */;
- 7A637EDD0E1B048F00290ECE /* PBXTextBookmark */ = 7A637EDD0E1B048F00290ECE /* PBXTextBookmark */;
- 7A637EDE0E1B048F00290ECE /* PBXTextBookmark */ = 7A637EDE0E1B048F00290ECE /* PBXTextBookmark */;
- 7A637F330E1B0B0C00290ECE /* PBXTextBookmark */ = 7A637F330E1B0B0C00290ECE /* PBXTextBookmark */;
- 7A637F340E1B0B0C00290ECE /* PBXTextBookmark */ = 7A637F340E1B0B0C00290ECE /* PBXTextBookmark */;
- 7A637F360E1B0B0C00290ECE /* PBXTextBookmark */ = 7A637F360E1B0B0C00290ECE /* PBXTextBookmark */;
- 7A6381330E37FC1700290ECE /* PBXTextBookmark */ = 7A6381330E37FC1700290ECE /* PBXTextBookmark */;
- 7A65016D1021B36600CA0257 /* PBXTextBookmark */ = 7A65016D1021B36600CA0257 /* PBXTextBookmark */;
- 7A6501831021B9B700CA0257 /* PBXTextBookmark */ = 7A6501831021B9B700CA0257 /* PBXTextBookmark */;
- 7A6880DF117C9E7F00172604 /* PBXTextBookmark */ = 7A6880DF117C9E7F00172604 /* PBXTextBookmark */;
- 7A6880E6117C9E7F00172604 /* PBXTextBookmark */ = 7A6880E6117C9E7F00172604 /* PBXTextBookmark */;
- 7A6FCC97103D5C9000D8926C /* PBXTextBookmark */ = 7A6FCC97103D5C9000D8926C /* PBXTextBookmark */;
- 7A6FCC99103D5C9000D8926C /* PBXTextBookmark */ = 7A6FCC99103D5C9000D8926C /* PBXTextBookmark */;
- 7A6FCC9B103D5C9000D8926C /* PBXBookmark */ = 7A6FCC9B103D5C9000D8926C /* PBXBookmark */;
- 7A6FCC9C103D5C9000D8926C /* PBXBookmark */ = 7A6FCC9C103D5C9000D8926C /* PBXBookmark */;
- 7A6FCC9D103D5C9000D8926C /* PBXTextBookmark */ = 7A6FCC9D103D5C9000D8926C /* PBXTextBookmark */;
- 7A95A3130CF2E5DE0047ECA1 /* PBXTextBookmark */ = 7A95A3130CF2E5DE0047ECA1 /* PBXTextBookmark */;
- 7A95A3350CF2EA5C0047ECA1 /* PBXTextBookmark */ = 7A95A3350CF2EA5C0047ECA1 /* PBXTextBookmark */;
- 7A9654D50F0F7B7300B44F05 /* PBXTextBookmark */ = 7A9654D50F0F7B7300B44F05 /* PBXTextBookmark */;
- 7A9654D70F0F7B7300B44F05 /* PBXTextBookmark */ = 7A9654D70F0F7B7300B44F05 /* PBXTextBookmark */;
- 7A9654D80F0F7B7300B44F05 /* PBXTextBookmark */ = 7A9654D80F0F7B7300B44F05 /* PBXTextBookmark */;
- 7A9654DA0F0F7B7300B44F05 /* PBXTextBookmark */ = 7A9654DA0F0F7B7300B44F05 /* PBXTextBookmark */;
- 7A9654DE0F0F7B7300B44F05 /* PBXTextBookmark */ = 7A9654DE0F0F7B7300B44F05 /* PBXTextBookmark */;
- 7A9A688F0E7BD5AB00A443F1 /* PBXTextBookmark */ = 7A9A688F0E7BD5AB00A443F1 /* PBXTextBookmark */;
- 7AB5A8900E51246F0097BFB4 /* PBXTextBookmark */ = 7AB5A8900E51246F0097BFB4 /* PBXTextBookmark */;
- 7AB5A8BC0E52D2920097BFB4 /* PBXTextBookmark */ = 7AB5A8BC0E52D2920097BFB4 /* PBXTextBookmark */;
- 7AC7F46F0F25B5A40013E7C0 /* PBXTextBookmark */ = 7AC7F46F0F25B5A40013E7C0 /* PBXTextBookmark */;
- 7AC7F4920F25B6F40013E7C0 /* PBXTextBookmark */ = 7AC7F4920F25B6F40013E7C0 /* PBXTextBookmark */;
- 7AC7F51D0F44A21C0013E7C0 /* PBXTextBookmark */ = 7AC7F51D0F44A21C0013E7C0 /* PBXTextBookmark */;
- 7AD402061228F08500A40EBA /* PBXTextBookmark */ = 7AD402061228F08500A40EBA /* PBXTextBookmark */;
- 7AD402071228F08500A40EBA /* PBXTextBookmark */ = 7AD402071228F08500A40EBA /* PBXTextBookmark */;
- 7AD404B3122A4BA600A40EBA /* PBXTextBookmark */ = 7AD404B3122A4BA600A40EBA /* PBXTextBookmark */;
- 7AD404E7122A7D3F00A40EBA /* PlistBookmark */ = 7AD404E7122A7D3F00A40EBA /* PlistBookmark */;
- 7AD404E8122A7D3F00A40EBA /* PBXTextBookmark */ = 7AD404E8122A7D3F00A40EBA /* PBXTextBookmark */;
- 7AD404EA122A7D3F00A40EBA /* PBXTextBookmark */ = 7AD404EA122A7D3F00A40EBA /* PBXTextBookmark */;
- 7AE0BBAE120E108F00992317 /* PBXTextBookmark */ = 7AE0BBAE120E108F00992317 /* PBXTextBookmark */;
- };
- sourceControlManager = 7A6296300CC1B38C0064C5C6 /* Source Control */;
- userBuildSettings = {
- };
- };
- 32DBCF630370AF2F00C91783 /* SkypePlugin_Prefix.pch */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1169, 221}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 154}";
- sepNavVisRect = "{{0, 0}, {783, 368}}";
- sepNavWindowFrame = "{{82, 111}, {770, 762}}";
- };
- };
- 7A0282431246341400601D8E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */;
- name = "PurpleSkypeAccount.m: 48";
- rLen = 0;
- rLoc = 977;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 7A0282441246341400601D8E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A62963F0CC1B56A0064C5C6 /* SkypePlugin.m */;
- name = "SkypePlugin.m: 74";
- rLen = 43;
- rLoc = 2550;
- rType = 0;
- vrLen = 1072;
- vrLoc = 1842;
- };
- 7A0282451246341400601D8E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */;
- name = "PurpleSkypeService.m: 123";
- rLen = 0;
- rLoc = 2206;
- rType = 0;
- vrLen = 691;
- vrLoc = 145;
- };
- 7A02826E1246353100601D8E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */;
- name = "PurpleSkypeAccount.m: 308";
- rLen = 0;
- rLoc = 9149;
- rType = 0;
- vrLen = 1288;
- vrLoc = 7868;
- };
- 7A02826F1246353100601D8E /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 7A0A781A0D46A1EA0003B3EA /* skype-small.png */;
- };
- 7A028279124CC2A900601D8E /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */;
- name = "PurpleSkypeAccount.m: 48";
- rLen = 0;
- rLoc = 977;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 7A02827A124CC2A900601D8E /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 7A3654E60D0273270075FBB5 /* skype-small.png */;
- };
- 7A04D8B810621C3E003A1D13 /* AIInterfaceControllerProtocol.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = AIInterfaceControllerProtocol.h;
- path = /Users/mymacspace/adium/Build/Release/Adium.framework/Headers/AIInterfaceControllerProtocol.h;
- sourceTree = "<absolute>";
- };
- 7A04D9A210622142003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 32DBCF630370AF2F00C91783 /* SkypePlugin_Prefix.pch */;
- name = "SkypePlugin_Prefix.pch: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 154;
- vrLoc = 0;
- };
- 7A04D9A710622142003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A04D8B810621C3E003A1D13 /* AIInterfaceControllerProtocol.h */;
- name = "AIInterfaceControllerProtocol.h: 466";
- rLen = 55;
- rLoc = 17424;
- rType = 0;
- vrLen = 790;
- vrLoc = 17031;
- };
- 7A04D9A810622142003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C80CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m */;
- name = "PurpleSkypeAccountViewController.m: 32";
- rLen = 23;
- rLoc = 575;
- rType = 0;
- vrLen = 367;
- vrLoc = 0;
- };
- 7A04D9A910622142003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */;
- name = "PurpleSkypeService.m: 20";
- rLen = 62;
- rLoc = 447;
- rType = 0;
- vrLen = 687;
- vrLoc = 3645;
- };
- 7A04DA111062259B003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7AB5A8B60E512DDC0097BFB4 /* skype_messaging_network.c */;
- name = "skype_messaging_network.c: 9";
- rLen = 72;
- rLoc = 310;
- rType = 0;
- vrLen = 579;
- vrLoc = 4023;
- };
- 7A04DA55106232DE003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A04DA56106232DE003A1D13 /* Processes.h */;
- name = "Processes.h: 142";
- rLen = 523;
- rLoc = 5030;
- rType = 0;
- vrLen = 1356;
- vrLoc = 4546;
- };
- 7A04DA56106232DE003A1D13 /* Processes.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = Processes.h;
- path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h;
- sourceTree = "<absolute>";
- };
- 7A04DA58106232DE003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A04DA59106232DE003A1D13 /* Processes.h */;
- name = "Processes.h: 220";
- rLen = 13;
- rLoc = 8153;
- rType = 0;
- vrLen = 1181;
- vrLoc = 8575;
- };
- 7A04DA59106232DE003A1D13 /* Processes.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = Processes.h;
- path = /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h;
- sourceTree = "<absolute>";
- };
- 7A04DA5B106232DE003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A7FDA300CF28363002A673A /* skype_messaging_carbon2.c */;
- name = "skype_messaging_carbon2.c: 310";
- rLen = 83;
- rLoc = 7308;
- rType = 0;
- vrLen = 708;
- vrLoc = 9106;
- };
- 7A04DA7010623771003A1D13 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */;
- name = "skype_messaging_carbon.c: 182";
- rLen = 0;
- rLoc = 4666;
- rType = 0;
- vrLen = 707;
- vrLoc = 4161;
- };
- 7A0A781A0D46A1EA0003B3EA /* skype-small.png */ = {
- isa = PBXFileReference;
- lastKnownFileType = image.png;
- path = "skype-small.png";
- sourceTree = "<group>";
- };
- 7A0A7A3A0D4852FC0003B3EA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A0A7A3B0D4852FC0003B3EA /* no_headers_here.txt */;
- name = "no_headers_here.txt: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 7A0A7A3B0D4852FC0003B3EA /* no_headers_here.txt */ = {
- isa = PBXFileReference;
- lastKnownFileType = text;
- name = no_headers_here.txt;
- path = /Applications/Adium.app/Contents/Frameworks/libgthread.framework/Headers/no_headers_here.txt;
- sourceTree = "<absolute>";
- };
- 7A1F47F41108102A0057D2EC /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7AA523280D7C9BCB004CAB28 /* debug.c */;
- name = "debug.c: 114";
- rLen = 0;
- rLoc = 2989;
- rType = 0;
- vrLen = 781;
- vrLoc = 2323;
- };
- 7A26AF130CE2AC880011676B /* skype_messaging_carbon.c:75 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */;
- functionName = "skype_connect()";
- hitCount = 1;
- ignoreCount = 0;
- lineNumber = 75;
- location = SkypePlugin;
- modificationTime = 236580431.466156;
- originalNumberOfMultipleMatches = 0;
- state = 1;
- };
- 7A26AF150CE2AC8B0011676B /* skype_messaging_carbon.c:97 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */;
- functionName = "skype_connect()";
- hitCount = 1;
- ignoreCount = 0;
- lineNumber = 97;
- location = SkypePlugin;
- modificationTime = 236580470.604144;
- originalNumberOfMultipleMatches = 0;
- state = 1;
- };
- 7A26E8BF113CF96200411626 /* CBPurpleAccount.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = CBPurpleAccount.h;
- path = /Users/mymacspace/adium/Build/Release/AdiumLibpurple.framework/Versions/A/Headers/CBPurpleAccount.h;
- sourceTree = "<absolute>";
- };
- 7A2912690D94AFDD006AF606 /* skype_messaging_carbon.c:227 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */;
- functionName = "allow_app_in_skype_api()";
- hitCount = 2;
- ignoreCount = 0;
- lineNumber = 227;
- location = SkypePlugin;
- modificationTime = 236580709.051014;
- originalNumberOfMultipleMatches = 0;
- state = 1;
- };
- 7A3BAFD20CD7DCF600B7D754 /* NSObjCRuntime.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = NSObjCRuntime.h;
- path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h;
- sourceTree = "<absolute>";
- };
- 7A3BAFE40CD7DEF900B7D754 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A3BAFD20CD7DCF600B7D754 /* NSObjCRuntime.h */;
- name = "NSObjCRuntime.h: 60";
- rLen = 17;
- rLoc = 1535;
- rType = 0;
- vrLen = 1029;
- vrLoc = 1218;
- };
- 7A3C9A8B113D001C00C35C57 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E1BB0FB30D2B00144F0F /* SkypeJoinChatViewController.m */;
- name = "SkypeJoinChatViewController.m: 49";
- rLen = 0;
- rLoc = 1323;
- rType = 0;
- vrLen = 1039;
- vrLoc = 813;
- };
- 7A3C9A8C113D001C00C35C57 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A26E8BF113CF96200411626 /* CBPurpleAccount.h */;
- name = "CBPurpleAccount.h: 30";
- rLen = 59;
- rLoc = 1296;
- rType = 0;
- vrLen = 1117;
- vrLoc = 1059;
- };
- 7A3C9A8D113D001C00C35C57 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C50CC1B6D00064C5C6 /* PurpleSkypeAccount.h */;
- name = "PurpleSkypeAccount.h: 13";
- rLen = 15;
- rLoc = 358;
- rType = 0;
- vrLen = 385;
- vrLoc = 0;
- };
- 7A3C9A94113D001C00C35C57 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C80CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m */;
- name = "PurpleSkypeAccountViewController.m: 30";
- rLen = 5;
- rLoc = 473;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 7A48DDFC0F7B8D6100144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7AA523280D7C9BCB004CAB28 /* debug.c */;
- name = "debug.c: 69";
- rLen = 0;
- rLoc = 1559;
- rType = 0;
- vrLen = 907;
- vrLoc = 1222;
- };
- 7A48DE370F808D2600144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A7FDA300CF28363002A673A /* skype_messaging_carbon2.c */;
- name = "skype_messaging_carbon2.c: 377";
- rLen = 0;
- rLoc = 8325;
- rType = 0;
- vrLen = 691;
- vrLoc = 6882;
- };
- 7A48DE380F808D2600144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */;
- name = "skype_messaging_carbon.c: 226";
- rLen = 4;
- rLoc = 5897;
- rType = 0;
- vrLen = 1418;
- vrLoc = 4268;
- };
- 7A48DE490F80916400144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C50CC1B6D00064C5C6 /* PurpleSkypeAccount.h */;
- name = "PurpleSkypeAccount.h: 13";
- rLen = 15;
- rLoc = 358;
- rType = 0;
- vrLen = 385;
- vrLoc = 0;
- };
- 7A48DE5E0F8092F100144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48DE5F0F8092F100144F0F /* blist.h */;
- name = "blist.h: 106";
- rLen = 5;
- rLoc = 4367;
- rType = 0;
- vrLen = 2003;
- vrLoc = 3580;
- };
- 7A48DE5F0F8092F100144F0F /* blist.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = blist.h;
- path = /Users/mymacspace/libpurple/pidgin/libpurple/blist.h;
- sourceTree = "<absolute>";
- };
- 7A48DE750F80A0FE00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48DE760F80A0FE00144F0F /* prpl.h */;
- name = "prpl.h: 470";
- rLen = 75;
- rLoc = 16063;
- rType = 0;
- vrLen = 1388;
- vrLoc = 15412;
- };
- 7A48DE760F80A0FE00144F0F /* prpl.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = prpl.h;
- path = /Users/mymacspace/libpurple/pidgin/libpurple/prpl.h;
- sourceTree = "<absolute>";
- };
- 7A48DE9B0F81D0BD00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48DE9C0F81D0BD00144F0F /* conversation.h */;
- name = "conversation.h: 53";
- rLen = 26;
- rLoc = 2053;
- rType = 0;
- vrLen = 1590;
- vrLoc = 1441;
- };
- 7A48DE9C0F81D0BD00144F0F /* conversation.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = conversation.h;
- path = /Users/mymacspace/libpurple/pidgin/libpurple/conversation.h;
- sourceTree = "<absolute>";
- };
- 7A48DEA70F81D0BD00144F0F /* conversation.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = conversation.h;
- path = /Users/mymacspace/libpurple/pidgin/libpurple/conversation.h;
- sourceTree = "<absolute>";
- };
- 7A48DED10F81EB9E00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48DED20F81EB9E00144F0F /* conversation.c */;
- name = "conversation.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 771;
- vrLoc = 0;
- };
- 7A48DED20F81EB9E00144F0F /* conversation.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = conversation.c;
- path = /Users/mymacspace/libpurple/pidgin/libpurple/conversation.c;
- sourceTree = "<absolute>";
- };
- 7A48DED30F81EB9E00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48DEA70F81D0BD00144F0F /* conversation.h */;
- name = "conversation.h: 304";
- rLen = 27;
- rLoc = 11676;
- rType = 0;
- vrLen = 528;
- vrLoc = 11546;
- };
- 7A48E0160F8A25EF00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E0170F8A25EF00144F0F /* server.c */;
- name = "server.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 432;
- vrLoc = 26670;
- };
- 7A48E0170F8A25EF00144F0F /* server.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = server.c;
- path = /Users/mymacspace/Downloads/server.c;
- sourceTree = "<absolute>";
- };
- 7A48E1BA0FB30D2B00144F0F /* SkypeJoinChatViewController.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {525, 330}}";
- sepNavSelRange = "{230, 18}";
- sepNavVisRange = "{0, 405}";
- sepNavWindowFrame = "{{85, 415}, {584, 458}}";
- };
- };
- 7A48E1BB0FB30D2B00144F0F /* SkypeJoinChatViewController.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {922, 1560}}";
- sepNavSelRange = "{179, 0}";
- sepNavVisRange = "{0, 708}";
- sepNavWindowFrame = "{{537, 380}, {832, 482}}";
- };
- };
- 7A48E1EF0FB3168E00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E1F00FB3168E00144F0F /* NSViewController.h */;
- name = "NSViewController.h: 52";
- rLen = 23;
- rLoc = 3007;
- rType = 0;
- vrLen = 3007;
- vrLoc = 1110;
- };
- 7A48E1F00FB3168E00144F0F /* NSViewController.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = NSViewController.h;
- path = /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSViewController.h;
- sourceTree = "<absolute>";
- };
- 7A48E2780FB31F6E00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E1BA0FB30D2B00144F0F /* SkypeJoinChatViewController.h */;
- name = "SkypeJoinChatViewController.h: 8";
- rLen = 0;
- rLoc = 160;
- rType = 0;
- vrLen = 405;
- vrLoc = 0;
- };
- 7A48E2940FB3209600144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E1D0E1AEF5800290ECE /* en_AU.po */;
- name = "en_AU.po: 54";
- rLen = 51;
- rLoc = 1088;
- rType = 0;
- vrLen = 659;
- vrLoc = 998;
- };
- 7A48E2EB1014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E2EC1014728D00144F0F /* gspawn.h */;
- name = "gspawn.h: 128";
- rLen = 73;
- rLoc = 5496;
- rType = 0;
- vrLen = 1582;
- vrLoc = 902;
- };
- 7A48E2EC1014728D00144F0F /* gspawn.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = gspawn.h;
- path = /Users/mymacspace/libpurple/Libraries/glib/glib/gspawn.h;
- sourceTree = "<absolute>";
- };
- 7A48E2F01014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A629DBD0CC375700064C5C6 /* PurpleService.m */;
- name = "PurpleService.m: 18";
- rLen = 0;
- rLoc = 885;
- rType = 0;
- vrLen = 922;
- vrLoc = 0;
- };
- 7A48E2F11014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A629D910CC36F270064C5C6 /* PurpleService.h */;
- name = "PurpleService.h: 17";
- rLen = 9;
- rLoc = 874;
- rType = 0;
- vrLen = 936;
- vrLoc = 0;
- };
- 7A48E2F41014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E2F51014728D00144F0F /* NSString.h */;
- name = "NSString.h: 237";
- rLen = 10;
- rLoc = 13358;
- rType = 0;
- vrLen = 2565;
- vrLoc = 12903;
- };
- 7A48E2F51014728D00144F0F /* NSString.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = NSString.h;
- path = /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h;
- sourceTree = "<absolute>";
- };
- 7A48E2F61014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E2F71014728D00144F0F /* NSString.h */;
- name = "NSString.h: 164";
- rLen = 89;
- rLoc = 7824;
- rType = 0;
- vrLen = 3194;
- vrLoc = 5712;
- };
- 7A48E2F71014728D00144F0F /* NSString.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = NSString.h;
- path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h;
- sourceTree = "<absolute>";
- };
- 7A48E2FB1014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9654F30F0F7B7300B44F05 /* skype_messaging_x11.c */;
- name = "skype_messaging_x11.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1379;
- vrLoc = 0;
- };
- 7A48E2FC1014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9654F10F0F7B7300B44F05 /* skype_messaging_win32.c */;
- name = "skype_messaging_win32.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1433;
- vrLoc = 0;
- };
- 7A48E2FD1014728D00144F0F /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9654EE0F0F7B7300B44F05 /* skype_messaging_dbus.c */;
- name = "skype_messaging_dbus.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 855;
- vrLoc = 2814;
- };
- 7A553B4E121D614200635123 /* eventloop.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = eventloop.h;
- path = /Users/mymacspace/adium/Frameworks/libpurple.framework/Versions/0.6.5/Headers/eventloop.h;
- sourceTree = "<absolute>";
- };
- 7A553B58121D650100635123 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296D90CC1B7A20064C5C6 /* skype_messaging.c */;
- name = "skype_messaging.c: 15";
- rLen = 15;
- rLoc = 634;
- rType = 0;
- vrLen = 0;
- vrLoc = 0;
- };
- 7A553B59121D650100635123 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A553B5A121D650100635123 /* blist.h */;
- name = "blist.h: 927";
- rLen = 50;
- rLoc = 28379;
- rType = 0;
- vrLen = 1029;
- vrLoc = 27869;
- };
- 7A553B5A121D650100635123 /* blist.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = blist.h;
- path = /Users/mymacspace/adium/Frameworks/libpurple.framework/Versions/0.6.5/Headers/blist.h;
- sourceTree = "<absolute>";
- };
- 7A553B5C121D650100635123 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A553B4E121D614200635123 /* eventloop.h */;
- name = "eventloop.h: 198";
- rLen = 87;
- rLoc = 7066;
- rType = 0;
- vrLen = 1195;
- vrLoc = 6482;
- };
- 7A553B7B121D6C6F00635123 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A93A4BC0CCEE2DB008F5639 /* skype_events.c */;
- name = "skype_events.c: 670";
- rLen = 0;
- rLoc = 25259;
- rType = 0;
- vrLen = 1394;
- vrLoc = 24035;
- };
- 7A6296300CC1B38C0064C5C6 /* Source Control */ = {
- isa = PBXSourceControlManager;
- fallbackIsa = XCSourceControlManager;
- isSCMEnabled = 0;
- scmConfiguration = {
- repositoryNamesForRoots = {
- "" = "";
- };
- };
- scmType = "";
- };
- 7A6296310CC1B38C0064C5C6 /* Code sense */ = {
- isa = PBXCodeSenseManager;
- indexTemplatePath = "";
- };
- 7A62963E0CC1B56A0064C5C6 /* SkypePlugin.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {547, 431}}";
- sepNavSelRange = "{144, 18}";
- sepNavVisRange = "{0, 171}";
- sepNavVisRect = "{{0, 0}, {628, 499}}";
- sepNavWindowFrame = "{{649, 189}, {667, 628}}";
- };
- };
- 7A62963F0CC1B56A0064C5C6 /* SkypePlugin.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1321, 1170}}";
- sepNavSelRange = "{2550, 43}";
- sepNavVisRange = "{1842, 1072}";
- sepNavVisRect = "{{0, 0}, {628, 499}}";
- sepNavWindowFrame = "{{765, 188}, {667, 628}}";
- };
- };
- 7A6296C50CC1B6D00064C5C6 /* PurpleSkypeAccount.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {793, 494}}";
- sepNavSelRange = "{358, 15}";
- sepNavVisRange = "{0, 385}";
- sepNavVisRect = "{{0, 0}, {783, 368}}";
- sepNavWindowFrame = "{{276, 35}, {667, 628}}";
- };
- };
- 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {792, 4108}}";
- sepNavSelRange = "{977, 0}";
- sepNavVisRange = "{0, 0}";
- sepNavVisRect = "{{0, 71}, {783, 368}}";
- sepNavWindowFrame = "{{281, 33}, {667, 628}}";
- };
- };
- 7A6296C70CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {702, 431}}";
- sepNavSelRange = "{96, 42}";
- sepNavVisRange = "{0, 520}";
- sepNavVisRect = "{{0, 0}, {783, 368}}";
- sepNavWindowFrame = "{{46, 245}, {667, 628}}";
- };
- };
- 7A6296C80CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {887, 624}}";
- sepNavSelRange = "{473, 5}";
- sepNavVisRange = "{0, 0}";
- sepNavVisRect = "{{0, 0}, {783, 368}}";
- };
- };
- 7A6296C90CC1B6D00064C5C6 /* PurpleSkypeService.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {547, 431}}";
- sepNavSelRange = "{138, 13}";
- sepNavVisRange = "{0, 163}";
- sepNavVisRect = "{{0, 0}, {783, 368}}";
- };
- };
- 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1111, 2418}}";
- sepNavSelRange = "{2206, 0}";
- sepNavVisRange = "{145, 691}";
- sepNavVisRect = "{{0, 817}, {628, 499}}";
- sepNavWindowFrame = "{{138, 162}, {667, 628}}";
- };
- };
- 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {612, 3668}}";
- sepNavSelRange = "{4666, 0}";
- sepNavVisRange = "{4161, 707}";
- sepNavVisRect = "{{0, 1328}, {783, 368}}";
- sepNavWindowFrame = "{{645, 238}, {667, 628}}";
- };
- };
- 7A6296D90CC1B7A20064C5C6 /* skype_messaging.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {793, 3497}}";
- sepNavSelRange = "{634, 15}";
- sepNavVisRange = "{0, 0}";
- sepNavVisRect = "{{0, 408}, {783, 368}}";
- };
- };
- 7A6296DA0CC1B7A20064C5C6 /* libskype.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1860, 45877}}";
- sepNavSelRange = "{32090, 39}";
- sepNavVisRange = "{50436, 904}";
- sepNavVisRect = "{{0, 8200}, {783, 368}}";
- sepNavWindowFrame = "{{146, 196}, {667, 628}}";
- };
- };
- 7A629D910CC36F270064C5C6 /* PurpleService.h */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {792, 401}}";
- sepNavSelRange = "{874, 9}";
- sepNavVisRange = "{0, 936}";
- sepNavWindowFrame = "{{200, 6}, {770, 762}}";
- };
- };
- 7A629DBD0CC375700064C5C6 /* PurpleService.m */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {792, 401}}";
- sepNavSelRange = "{885, 0}";
- sepNavVisRange = "{0, 922}";
- sepNavVisRect = "{{0, 0}, {783, 368}}";
- sepNavWindowFrame = "{{197, 6}, {770, 762}}";
- };
- };
- 7A637E1C0E1AEF5800290ECE /* de.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 3220}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{4262, 723}";
- sepNavWindowFrame = "{{105, 90}, {770, 762}}";
- };
- };
- 7A637E1D0E1AEF5800290ECE /* en_AU.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 2982}}";
- sepNavSelRange = "{1088, 51}";
- sepNavVisRange = "{998, 659}";
- };
- };
- 7A637E1E0E1AEF5800290ECE /* es.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 3038}}";
- sepNavSelRange = "{414, 0}";
- sepNavVisRange = "{0, 1210}";
- };
- };
- 7A637E1F0E1AEF5800290ECE /* fr.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 2912}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1146}";
- };
- };
- 7A637E200E1AEF5800290ECE /* hu.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 3444}}";
- sepNavSelRange = "{224, 0}";
- sepNavVisRange = "{0, 1090}";
- };
- };
- 7A637E210E1AEF5800290ECE /* it.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 2982}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1128}";
- };
- };
- 7A637E220E1AEF5800290ECE /* ja.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 2972}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 934}";
- };
- };
- 7A637E230E1AEF5800290ECE /* nb.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1166, 3878}}";
- sepNavSelRange = "{4884, 0}";
- sepNavVisRange = "{0, 339}";
- };
- };
- 7A637E240E1AEF5800290ECE /* pl.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 3150}}";
- sepNavSelRange = "{350, 20}";
- sepNavVisRange = "{0, 1080}";
- };
- };
- 7A637E250E1AEF5800290ECE /* ru.po */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 3066}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 1051}";
- };
- };
- 7A637E260E1AEF5800290ECE /* skype4pidgin.pot */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {957, 2982}}";
- sepNavSelRange = "{0, 0}";
- sepNavVisRange = "{0, 865}";
- };
- };
- 7A637E340E1AEF6E00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E260E1AEF5800290ECE /* skype4pidgin.pot */;
- name = "skype4pidgin.pot: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 865;
- vrLoc = 0;
- };
- 7A637ED80E1B048F00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E210E1AEF5800290ECE /* it.po */;
- name = "it.po: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1128;
- vrLoc = 0;
- };
- 7A637EDA0E1B048F00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E1D0E1AEF5800290ECE /* en_AU.po */;
- name = "en_AU.po: 13";
- rLen = 0;
- rLoc = 335;
- rType = 0;
- vrLen = 853;
- vrLoc = 0;
- };
- 7A637EDD0E1B048F00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E250E1AEF5800290ECE /* ru.po */;
- name = "ru.po: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1051;
- vrLoc = 0;
- };
- 7A637EDE0E1B048F00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E220E1AEF5800290ECE /* ja.po */;
- name = "ja.po: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 934;
- vrLoc = 0;
- };
- 7A637F330E1B0B0C00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E200E1AEF5800290ECE /* hu.po */;
- name = "hu.po: 9";
- rLen = 0;
- rLoc = 224;
- rType = 0;
- vrLen = 1090;
- vrLoc = 0;
- };
- 7A637F340E1B0B0C00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E1F0E1AEF5800290ECE /* fr.po */;
- name = "fr.po: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1146;
- vrLoc = 0;
- };
- 7A637F360E1B0B0C00290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E230E1AEF5800290ECE /* nb.po */;
- name = "nb.po: 1";
- rLen = 0;
- rLoc = 9;
- rType = 0;
- vrLen = 1109;
- vrLoc = 0;
- };
- 7A6381330E37FC1700290ECE /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E1C0E1AEF5800290ECE /* de.po */;
- name = "de.po: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 723;
- vrLoc = 4262;
- };
- 7A6382500E40787E00290ECE /* SkypeNetPlugin */ = {
- activeExec = 0;
- };
- 7A6500B51021AF4600CA0257 /* eventloop.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = eventloop.h;
- path = /Users/mymacspace/libpurple/pidgin/libpurple/eventloop.h;
- sourceTree = "<absolute>";
- };
- 7A65016D1021B36600CA0257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6500B51021AF4600CA0257 /* eventloop.h */;
- name = "eventloop.h: 55";
- rLen = 0;
- rLoc = 1622;
- rType = 0;
- vrLen = 1362;
- vrLoc = 1131;
- };
- 7A6501831021B9B700CA0257 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6501841021B9B700CA0257 /* libskype.c */;
- name = "libskype.c: 610";
- rLen = 18;
- rLoc = 20993;
- rType = 0;
- vrLen = 1315;
- vrLoc = 20234;
- };
- 7A6501841021B9B700CA0257 /* libskype.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = libskype.c;
- path = /Users/mymacspace/skype4pidgin/libskype.c;
- sourceTree = "<absolute>";
- };
- 7A6880DF117C9E7F00172604 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296D90CC1B7A20064C5C6 /* skype_messaging.c */;
- name = "skype_messaging.c: 246";
- rLen = 33;
- rLoc = 6332;
- rType = 0;
- vrLen = 761;
- vrLoc = 4024;
- };
- 7A6880E6117C9E7F00172604 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A93A4BC0CCEE2DB008F5639 /* skype_events.c */;
- name = "skype_events.c: 170";
- rLen = 27;
- rLoc = 5654;
- rType = 0;
- vrLen = 1548;
- vrLoc = 5806;
- };
- 7A6FCC97103D5C9000D8926C /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A62963E0CC1B56A0064C5C6 /* SkypePlugin.h */;
- name = "SkypePlugin.h: 10";
- rLen = 18;
- rLoc = 144;
- rType = 0;
- vrLen = 171;
- vrLoc = 0;
- };
- 7A6FCC99103D5C9000D8926C /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C90CC1B6D00064C5C6 /* PurpleSkypeService.h */;
- name = "PurpleSkypeService.h: 10";
- rLen = 13;
- rLoc = 138;
- rType = 0;
- vrLen = 163;
- vrLoc = 0;
- };
- 7A6FCC9B103D5C9000D8926C /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 7A0A781A0D46A1EA0003B3EA /* skype-small.png */;
- };
- 7A6FCC9C103D5C9000D8926C /* PBXBookmark */ = {
- isa = PBXBookmark;
- fRef = 7A3654E70D0273270075FBB5 /* skype.png */;
- };
- 7A6FCC9D103D5C9000D8926C /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C70CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.h */;
- name = "PurpleSkypeAccountViewController.h: 7";
- rLen = 42;
- rLoc = 96;
- rType = 0;
- vrLen = 520;
- vrLoc = 0;
- };
- 7A7FDA300CF28363002A673A /* skype_messaging_carbon2.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1169, 5922}}";
- sepNavSelRange = "{7391, 0}";
- sepNavVisRange = "{7031, 406}";
- sepNavWindowFrame = "{{87, 415}, {584, 458}}";
- };
- };
- 7A93A4BC0CCEE2DB008F5639 /* skype_events.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {908, 16783}}";
- sepNavSelRange = "{25259, 0}";
- sepNavVisRange = "{24035, 1394}";
- sepNavVisRect = "{{0, 1047}, {783, 368}}";
- sepNavWindowFrame = "{{78, 245}, {667, 628}}";
- };
- };
- 7A95A3130CF2E5DE0047ECA1 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A95A3140CF2E5DE0047ECA1 /* AIAbstractAccount.h */;
- name = "AIAbstractAccount.h: 22";
- rLen = 19;
- rLoc = 952;
- rType = 0;
- vrLen = 1146;
- vrLoc = 0;
- };
- 7A95A3140CF2E5DE0047ECA1 /* AIAbstractAccount.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = AIAbstractAccount.h;
- path = "/Users/mymacspace/adium/Frameworks/Adium Framework/Source/AIAbstractAccount.h";
- sourceTree = "<absolute>";
- };
- 7A95A3300CF2E9C70047ECA1 /* skype_messaging_x11.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_x11.c;
- path = /Users/mymacspace/skype4pidgin/skype_messaging_x11.c;
- sourceTree = "<absolute>";
- };
- 7A95A3350CF2EA5C0047ECA1 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A95A3300CF2E9C70047ECA1 /* skype_messaging_x11.c */;
- name = "skype_messaging_x11.c: 141";
- rLen = 95;
- rLoc = 3646;
- rType = 0;
- vrLen = 690;
- vrLoc = 3129;
- };
- 7A9654AF0F0F79D800B44F05 /* skype_events.c:139 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = 7A93A4BC0CCEE2DB008F5639 /* skype_events.c */;
- functionName = "skype_handle_received_message()";
- hitCount = 0;
- ignoreCount = 0;
- lineNumber = 139;
- modificationTime = 252672472.608521;
- originalNumberOfMultipleMatches = 0;
- state = 1;
- };
- 7A9654D50F0F7B7300B44F05 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9654D60F0F7B7300B44F05 /* skype_messaging_dbus.c */;
- name = "skype_messaging_dbus.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 935;
- vrLoc = 0;
- };
- 7A9654D60F0F7B7300B44F05 /* skype_messaging_dbus.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_dbus.c;
- path = /Users/mymacspace/SkypePlugin/skype_messaging_dbus.c;
- sourceTree = "<absolute>";
- };
- 7A9654D70F0F7B7300B44F05 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7AB5A8B60E512DDC0097BFB4 /* skype_messaging_network.c */;
- name = "skype_messaging_network.c: 18";
- rLen = 72;
- rLoc = 310;
- rType = 0;
- vrLen = 732;
- vrLoc = 0;
- };
- 7A9654D80F0F7B7300B44F05 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9654D90F0F7B7300B44F05 /* skype_messaging_win32.c */;
- name = "skype_messaging_win32.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 1303;
- vrLoc = 0;
- };
- 7A9654D90F0F7B7300B44F05 /* skype_messaging_win32.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_win32.c;
- path = /Users/mymacspace/SkypePlugin/skype_messaging_win32.c;
- sourceTree = "<absolute>";
- };
- 7A9654DA0F0F7B7300B44F05 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9654DB0F0F7B7300B44F05 /* skype_messaging_x11.c */;
- name = "skype_messaging_x11.c: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 948;
- vrLoc = 0;
- };
- 7A9654DB0F0F7B7300B44F05 /* skype_messaging_x11.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_x11.c;
- path = /Users/mymacspace/SkypePlugin/skype_messaging_x11.c;
- sourceTree = "<absolute>";
- };
- 7A9654DE0F0F7B7300B44F05 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A62963E0CC1B56A0064C5C6 /* SkypePlugin.h */;
- name = "SkypePlugin.h: 10";
- rLen = 18;
- rLoc = 144;
- rType = 0;
- vrLen = 171;
- vrLoc = 0;
- };
- 7A9654EE0F0F7B7300B44F05 /* skype_messaging_dbus.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_dbus.c;
- path = /Users/mymacspace/SkypePlugin/skype_messaging_dbus.c;
- sourceTree = "<absolute>";
- };
- 7A9654F10F0F7B7300B44F05 /* skype_messaging_win32.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_win32.c;
- path = /Users/mymacspace/SkypePlugin/skype_messaging_win32.c;
- sourceTree = "<absolute>";
- };
- 7A9654F30F0F7B7300B44F05 /* skype_messaging_x11.c */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.c;
- name = skype_messaging_x11.c;
- path = /Users/mymacspace/SkypePlugin/skype_messaging_x11.c;
- sourceTree = "<absolute>";
- };
- 7A9A688F0E7BD5AB00A443F1 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A9A68900E7BD5AB00A443F1 /* Info.plist */;
- name = "Info.plist: 27";
- rLen = 0;
- rLoc = 795;
- rType = 0;
- vrLen = 795;
- vrLoc = 0;
- };
- 7A9A68900E7BD5AB00A443F1 /* Info.plist */ = {
- isa = PBXFileReference;
- lastKnownFileType = text.plist.xml;
- name = Info.plist;
- path = /Users/mymacspace/SkypePlugin/build/Release/SkypePlugin.AdiumPlugin/Contents/Info.plist;
- sourceTree = "<absolute>";
- };
- 7AA523280D7C9BCB004CAB28 /* debug.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {572, 1755}}";
- sepNavSelRange = "{2989, 0}";
- sepNavVisRange = "{2323, 781}";
- };
- };
- 7AB5A8550E4C200E0097BFB4 /* gaim-compat.h */ = {
- isa = PBXFileReference;
- lastKnownFileType = sourcecode.c.h;
- name = "gaim-compat.h";
- path = "/Users/mymacspace/SkypePlugin/../adium/Frameworks/libpurple.framework/Headers/gaim-compat.h";
- sourceTree = "<absolute>";
- };
- 7AB5A8900E51246F0097BFB4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7AB5A8550E4C200E0097BFB4 /* gaim-compat.h */;
- name = "gaim-compat.h: 29";
- rLen = 18;
- rLoc = 1034;
- rType = 0;
- vrLen = 1398;
- vrLoc = 0;
- };
- 7AB5A8B60E512DDC0097BFB4 /* skype_messaging_network.c */ = {
- uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {660, 3192}}";
- sepNavSelRange = "{310, 72}";
- sepNavVisRange = "{4023, 579}";
- };
- };
- 7AB5A8BC0E52D2920097BFB4 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E240E1AEF5800290ECE /* pl.po */;
- name = "pl.po: 13";
- rLen = 20;
- rLoc = 350;
- rType = 0;
- vrLen = 1080;
- vrLoc = 0;
- };
- 7AC7F3DB0F21F42A0013E7C0 /* PurpleSkypeService.m:127 */ = {
- isa = PBXFileBreakpoint;
- actions = (
- );
- breakpointStyle = 0;
- continueAfterActions = 0;
- countType = 0;
- delayBeforeContinue = 0;
- fileReference = 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */;
- functionName = "-registerStatuses";
- hitCount = 0;
- ignoreCount = 0;
- lineNumber = 127;
- modificationTime = 253883434.988928;
- originalNumberOfMultipleMatches = 0;
- state = 1;
- };
- 7AC7F46F0F25B5A40013E7C0 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C90CC1B6D00064C5C6 /* PurpleSkypeService.h */;
- name = "PurpleSkypeService.h: 10";
- rLen = 13;
- rLoc = 138;
- rType = 0;
- vrLen = 163;
- vrLoc = 0;
- };
- 7AC7F4920F25B6F40013E7C0 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296C70CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.h */;
- name = "PurpleSkypeAccountViewController.h: 10";
- rLen = 23;
- rLoc = 186;
- rType = 0;
- vrLen = 413;
- vrLoc = 0;
- };
- 7AC7F51D0F44A21C0013E7C0 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A637E1E0E1AEF5800290ECE /* es.po */;
- name = "es.po: 15";
- rLen = 0;
- rLoc = 414;
- rType = 0;
- vrLen = 1210;
- vrLoc = 0;
- };
- 7AD402061228F08500A40EBA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A629DBD0CC375700064C5C6 /* PurpleService.m */;
- name = "PurpleService.m: 18";
- rLen = 0;
- rLoc = 885;
- rType = 0;
- vrLen = 922;
- vrLoc = 0;
- };
- 7AD402071228F08500A40EBA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A629D910CC36F270064C5C6 /* PurpleService.h */;
- name = "PurpleService.h: 17";
- rLen = 9;
- rLoc = 874;
- rType = 0;
- vrLen = 936;
- vrLoc = 0;
- };
- 7AD404B3122A4BA600A40EBA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 32DBCF630370AF2F00C91783 /* SkypePlugin_Prefix.pch */;
- name = "SkypePlugin_Prefix.pch: 1";
- rLen = 0;
- rLoc = 0;
- rType = 0;
- vrLen = 154;
- vrLoc = 0;
- };
- 7AD404E7122A7D3F00A40EBA /* PlistBookmark */ = {
- isa = PlistBookmark;
- fRef = 7A9A68900E7BD5AB00A443F1 /* Info.plist */;
- fallbackIsa = PBXBookmark;
- isK = 0;
- kPath = (
- AIMinimumAdiumVersionRequirement,
- );
- name = /Users/mymacspace/SkypePlugin/build/Release/SkypePlugin.AdiumPlugin/Contents/Info.plist;
- rLen = 0;
- rLoc = 2147483647;
- };
- 7AD404E8122A7D3F00A40EBA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A6296DA0CC1B7A20064C5C6 /* libskype.c */;
- name = "libskype.c: 956";
- rLen = 39;
- rLoc = 32090;
- rType = 0;
- vrLen = 904;
- vrLoc = 50436;
- };
- 7AD404EA122A7D3F00A40EBA /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A48E1BB0FB30D2B00144F0F /* SkypeJoinChatViewController.m */;
- name = "SkypeJoinChatViewController.m: 7";
- rLen = 0;
- rLoc = 179;
- rType = 0;
- vrLen = 708;
- vrLoc = 0;
- };
- 7AE0BBAE120E108F00992317 /* PBXTextBookmark */ = {
- isa = PBXTextBookmark;
- fRef = 7A62963F0CC1B56A0064C5C6 /* SkypePlugin.m */;
- name = "SkypePlugin.m: 66";
- rLen = 0;
- rLoc = 2065;
- rType = 0;
- vrLen = 1379;
- vrLoc = 1407;
- };
- 8D5B49AC048680CD000E48DA /* SkypePlugin */ = {
- activeExec = 0;
- };
-}
diff --git a/SkypePlugin.xcodeproj/project.pbxproj b/SkypePlugin.xcodeproj/project.pbxproj
deleted file mode 100644
index 8aa569a..0000000
--- a/SkypePlugin.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,602 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 7A3655060D0274430075FBB5 /* skype-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 7A3654E60D0273270075FBB5 /* skype-small.png */; };
- 7A3655090D02744A0075FBB5 /* skype.png in Resources */ = {isa = PBXBuildFile; fileRef = 7A3654E70D0273270075FBB5 /* skype.png */; };
- 7A48E1BC0FB30D2B00144F0F /* SkypeJoinChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A48E1BB0FB30D2B00144F0F /* SkypeJoinChatViewController.m */; };
- 7A48E1D10FB3136500144F0F /* SkypeJoinChatView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 7A48E1D00FB3136500144F0F /* SkypeJoinChatView.nib */; };
- 7A48E2690FB31E2900144F0F /* PurpleSkypeAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 7A48E2680FB31E2900144F0F /* PurpleSkypeAccountView.nib */; };
- 7A6296400CC1B56A0064C5C6 /* SkypePlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A62963F0CC1B56A0064C5C6 /* SkypePlugin.m */; };
- 7A6296CB0CC1B6D00064C5C6 /* PurpleSkypeAccount.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */; };
- 7A6296CC0CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A6296C80CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m */; };
- 7A6296CD0CC1B6D00064C5C6 /* PurpleSkypeService.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */; };
- 7A6296DD0CC1B7A20064C5C6 /* libskype.c in Sources */ = {isa = PBXBuildFile; fileRef = 7A6296DA0CC1B7A20064C5C6 /* libskype.c */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 32DBCF630370AF2F00C91783 /* SkypePlugin_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkypePlugin_Prefix.pch; sourceTree = "<group>"; };
- 7A24C3690CD1B0490090E475 /* AIUtilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AIUtilities.framework; path = /Applications/Adium.app/Contents/Frameworks/AIUtilities.framework; sourceTree = "<absolute>"; };
- 7A3654E60D0273270075FBB5 /* skype-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "skype-small.png"; sourceTree = "<group>"; };
- 7A3654E70D0273270075FBB5 /* skype.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = skype.png; sourceTree = "<group>"; };
- 7A398D320CC455B4006536F6 /* Adium.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Adium.framework; path = /Applications/Adium.app/Contents/Frameworks/Adium.framework; sourceTree = "<absolute>"; };
- 7A48E1BA0FB30D2B00144F0F /* SkypeJoinChatViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkypeJoinChatViewController.h; sourceTree = "<group>"; };
- 7A48E1BB0FB30D2B00144F0F /* SkypeJoinChatViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SkypeJoinChatViewController.m; sourceTree = "<group>"; };
- 7A48E1D00FB3136500144F0F /* SkypeJoinChatView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = SkypeJoinChatView.nib; sourceTree = "<group>"; };
- 7A48E2680FB31E2900144F0F /* PurpleSkypeAccountView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = PurpleSkypeAccountView.nib; sourceTree = "<group>"; };
- 7A59944B106466D700A68E5C /* libSkypeNetPlugin.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libSkypeNetPlugin.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
- 7A5A006D0D3190D300A388A6 /* libgthread.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libgthread.framework; path = /Applications/Adium.app/Contents/Frameworks/libgthread.framework; sourceTree = "<absolute>"; };
- 7A5A00730D31910800A388A6 /* libpurple.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libpurple.framework; path = /Applications/Adium.app/Contents/Frameworks/libpurple.framework; sourceTree = "<absolute>"; };
- 7A62963E0CC1B56A0064C5C6 /* SkypePlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkypePlugin.h; sourceTree = "<group>"; };
- 7A62963F0CC1B56A0064C5C6 /* SkypePlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SkypePlugin.m; sourceTree = "<group>"; };
- 7A6296C50CC1B6D00064C5C6 /* PurpleSkypeAccount.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurpleSkypeAccount.h; sourceTree = "<group>"; };
- 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PurpleSkypeAccount.m; sourceTree = "<group>"; };
- 7A6296C70CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurpleSkypeAccountViewController.h; sourceTree = "<group>"; };
- 7A6296C80CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PurpleSkypeAccountViewController.m; sourceTree = "<group>"; };
- 7A6296C90CC1B6D00064C5C6 /* PurpleSkypeService.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PurpleSkypeService.h; sourceTree = "<group>"; };
- 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PurpleSkypeService.m; sourceTree = "<group>"; };
- 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 30; path = skype_messaging_carbon.c; sourceTree = "<group>"; };
- 7A6296D90CC1B7A20064C5C6 /* skype_messaging.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = skype_messaging.c; sourceTree = "<group>"; };
- 7A6296DA0CC1B7A20064C5C6 /* libskype.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = libskype.c; sourceTree = "<group>"; };
- 7A6297C30CC330ED0064C5C6 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
- 7A629D910CC36F270064C5C6 /* PurpleService.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PurpleService.h; path = "../adium/Plugins/Purple Service/PurpleService.h"; sourceTree = SOURCE_ROOT; };
- 7A629DBD0CC375700064C5C6 /* PurpleService.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PurpleService.m; path = "../adium/Plugins/Purple Service/PurpleService.m"; sourceTree = SOURCE_ROOT; };
- 7A637E1C0E1AEF5800290ECE /* de.po */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = de.po; sourceTree = "<group>"; };
- 7A637E1D0E1AEF5800290ECE /* en_AU.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = en_AU.po; sourceTree = "<group>"; };
- 7A637E1E0E1AEF5800290ECE /* es.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = es.po; sourceTree = "<group>"; };
- 7A637E1F0E1AEF5800290ECE /* fr.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fr.po; sourceTree = "<group>"; };
- 7A637E200E1AEF5800290ECE /* hu.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hu.po; sourceTree = "<group>"; };
- 7A637E210E1AEF5800290ECE /* it.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = it.po; sourceTree = "<group>"; };
- 7A637E220E1AEF5800290ECE /* ja.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ja.po; sourceTree = "<group>"; };
- 7A637E230E1AEF5800290ECE /* nb.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = nb.po; sourceTree = "<group>"; };
- 7A637E240E1AEF5800290ECE /* pl.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pl.po; sourceTree = "<group>"; };
- 7A637E250E1AEF5800290ECE /* ru.po */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ru.po; sourceTree = "<group>"; };
- 7A637E260E1AEF5800290ECE /* skype4pidgin.pot */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = skype4pidgin.pot; sourceTree = "<group>"; };
- 7A7FDA300CF28363002A673A /* skype_messaging_carbon2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = skype_messaging_carbon2.c; sourceTree = "<group>"; };
- 7A93A4BC0CCEE2DB008F5639 /* skype_events.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = skype_events.c; sourceTree = "<group>"; };
- 7AA523280D7C9BCB004CAB28 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = "<group>"; };
- 7AB5A8B60E512DDC0097BFB4 /* skype_messaging_network.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = skype_messaging_network.c; sourceTree = "<group>"; };
- 7AE5BE5D0CC3952500125D43 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 8D5B49B6048680CD000E48DA /* SkypePlugin.AdiumPlugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SkypePlugin.AdiumPlugin; sourceTree = BUILT_PRODUCTS_DIR; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 7A63824F0E40787E00290ECE /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 089C166AFE841209C02AAC07 /* SkypePlugin */ = {
- isa = PBXGroup;
- children = (
- 7A629DBC0CC375410064C5C6 /* PurplePlugin Files */,
- 7A637E1B0E1AEF5800290ECE /* Locales */,
- 7A62963E0CC1B56A0064C5C6 /* SkypePlugin.h */,
- 7A62963F0CC1B56A0064C5C6 /* SkypePlugin.m */,
- 7AA523280D7C9BCB004CAB28 /* debug.c */,
- 7A6296D80CC1B7A20064C5C6 /* skype_messaging_carbon.c */,
- 7AB5A8B60E512DDC0097BFB4 /* skype_messaging_network.c */,
- 7A6296D90CC1B7A20064C5C6 /* skype_messaging.c */,
- 7A6296DA0CC1B7A20064C5C6 /* libskype.c */,
- 7A93A4BC0CCEE2DB008F5639 /* skype_events.c */,
- 7A7FDA300CF28363002A673A /* skype_messaging_carbon2.c */,
- 7A6296C50CC1B6D00064C5C6 /* PurpleSkypeAccount.h */,
- 7A6296C60CC1B6D00064C5C6 /* PurpleSkypeAccount.m */,
- 7A6296C70CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.h */,
- 7A6296C80CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m */,
- 7A48E2680FB31E2900144F0F /* PurpleSkypeAccountView.nib */,
- 7A6296C90CC1B6D00064C5C6 /* PurpleSkypeService.h */,
- 7A6296CA0CC1B6D00064C5C6 /* PurpleSkypeService.m */,
- 7A48E1BA0FB30D2B00144F0F /* SkypeJoinChatViewController.h */,
- 7A48E1BB0FB30D2B00144F0F /* SkypeJoinChatViewController.m */,
- 7A48E1D00FB3136500144F0F /* SkypeJoinChatView.nib */,
- 08FB77AFFE84173DC02AAC07 /* Classes */,
- 32C88E010371C26100C91783 /* Other Sources */,
- 089C167CFE841241C02AAC07 /* Resources */,
- 089C1671FE841209C02AAC07 /* Frameworks and Libraries */,
- 19C28FB8FE9D52D311CA2CBB /* Products */,
- );
- name = SkypePlugin;
- sourceTree = "<group>";
- };
- 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */,
- 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */,
- );
- name = "Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 089C167CFE841241C02AAC07 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 7A3654E70D0273270075FBB5 /* skype.png */,
- 7A3654E60D0273270075FBB5 /* skype-small.png */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 08FB77AFFE84173DC02AAC07 /* Classes */ = {
- isa = PBXGroup;
- children = (
- );
- name = Classes;
- sourceTree = "<group>";
- };
- 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = {
- isa = PBXGroup;
- children = (
- 7A5A00730D31910800A388A6 /* libpurple.framework */,
- 7A5A006D0D3190D300A388A6 /* libgthread.framework */,
- 7A24C3690CD1B0490090E475 /* AIUtilities.framework */,
- 7A398D320CC455B4006536F6 /* Adium.framework */,
- 7AE5BE5D0CC3952500125D43 /* Cocoa.framework */,
- 7A6297C30CC330ED0064C5C6 /* Carbon.framework */,
- );
- name = "Linked Frameworks";
- sourceTree = "<group>";
- };
- 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = {
- isa = PBXGroup;
- children = (
- );
- name = "Other Frameworks";
- sourceTree = "<group>";
- };
- 19C28FB8FE9D52D311CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D5B49B6048680CD000E48DA /* SkypePlugin.AdiumPlugin */,
- 7A59944B106466D700A68E5C /* libSkypeNetPlugin.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 32C88E010371C26100C91783 /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 32DBCF630370AF2F00C91783 /* SkypePlugin_Prefix.pch */,
- );
- name = "Other Sources";
- sourceTree = "<group>";
- };
- 7A629DBC0CC375410064C5C6 /* PurplePlugin Files */ = {
- isa = PBXGroup;
- children = (
- 7A629D910CC36F270064C5C6 /* PurpleService.h */,
- 7A629DBD0CC375700064C5C6 /* PurpleService.m */,
- );
- name = "PurplePlugin Files";
- sourceTree = "<group>";
- };
- 7A637E1B0E1AEF5800290ECE /* Locales */ = {
- isa = PBXGroup;
- children = (
- 7A637E1C0E1AEF5800290ECE /* de.po */,
- 7A637E1D0E1AEF5800290ECE /* en_AU.po */,
- 7A637E1E0E1AEF5800290ECE /* es.po */,
- 7A637E1F0E1AEF5800290ECE /* fr.po */,
- 7A637E200E1AEF5800290ECE /* hu.po */,
- 7A637E210E1AEF5800290ECE /* it.po */,
- 7A637E220E1AEF5800290ECE /* ja.po */,
- 7A637E230E1AEF5800290ECE /* nb.po */,
- 7A637E240E1AEF5800290ECE /* pl.po */,
- 7A637E250E1AEF5800290ECE /* ru.po */,
- 7A637E260E1AEF5800290ECE /* skype4pidgin.pot */,
- );
- includeInIndex = 1;
- name = Locales;
- path = po;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 7A63824D0E40787E00290ECE /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 7A6382500E40787E00290ECE /* SkypeNetPlugin */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 7A6382560E4078AC00290ECE /* Build configuration list for PBXNativeTarget "SkypeNetPlugin" */;
- buildPhases = (
- 7A63824D0E40787E00290ECE /* Headers */,
- 7A63824E0E40787E00290ECE /* Sources */,
- 7A63824F0E40787E00290ECE /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = SkypeNetPlugin;
- productName = SkypeNetPlugin;
- productReference = 7A59944B106466D700A68E5C /* libSkypeNetPlugin.dylib */;
- productType = "com.apple.product-type.library.dynamic";
- };
- 8D5B49AC048680CD000E48DA /* SkypePlugin */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "SkypePlugin" */;
- buildPhases = (
- 8D5B49AF048680CD000E48DA /* Resources */,
- 8D5B49B1048680CD000E48DA /* Sources */,
- 7A06CDD00CD6C38C00CBDAE6 /* Fix libpurple lookup */,
- 7A637E5C0E1AF03E00290ECE /* Compile locale's */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = SkypePlugin;
- productInstallPath = "$(HOME)/Library/Bundles";
- productName = SkypePlugin;
- productReference = 8D5B49B6048680CD000E48DA /* SkypePlugin.AdiumPlugin */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 089C1669FE841209C02AAC07 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- BuildIndependentTargetsInParallel = NO;
- };
- buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "SkypePlugin" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- ca,
- cs,
- da,
- de,
- en,
- en_AU,
- es,
- fi,
- fr,
- fr_CA,
- is,
- it,
- ja,
- nb,
- nl,
- pl,
- pt_BR,
- ru,
- sv,
- tr,
- Ukrainian,
- zh_CN,
- zh_TW,
- );
- mainGroup = 089C166AFE841209C02AAC07 /* SkypePlugin */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D5B49AC048680CD000E48DA /* SkypePlugin */,
- 7A6382500E40787E00290ECE /* SkypeNetPlugin */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D5B49AF048680CD000E48DA /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 7A3655090D02744A0075FBB5 /* skype.png in Resources */,
- 7A3655060D0274430075FBB5 /* skype-small.png in Resources */,
- 7A48E1D10FB3136500144F0F /* SkypeJoinChatView.nib in Resources */,
- 7A48E2690FB31E2900144F0F /* PurpleSkypeAccountView.nib in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 7A06CDD00CD6C38C00CBDAE6 /* Fix libpurple lookup */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 12;
- files = (
- );
- inputPaths = (
- );
- name = "Fix libpurple lookup";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "#Make this change for every new version of libpurple in Adium source\n/Developer/usr/bin/install_name_tool -change \"@executable_path/../Frameworks/libpurple.framework/Versions/0.6.5/libpurple\" \"@executable_path/../Frameworks/libpurple.framework/libpurple\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION/Contents/MacOS/$PRODUCT_NAME\"\n\n#this needs to be updated for every new version of glib in Adium\n/Developer/usr/bin/install_name_tool -change \"@executable_path/../Frameworks/libglib.framework/Versions/2.0.0/libglib\" \"@executable_path/../Frameworks/libglib.framework/libglib\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION/Contents/MacOS/$PRODUCT_NAME\"\n/Developer/usr/bin/install_name_tool -change \"@executable_path/../Frameworks/libgthread.framework/Versions/2.0.0/libgthread\" \"@executable_path/../Frameworks/libgthread.framework/libgthread\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION/Contents/MacOS/$PRODUCT_NAME\"\n\n#/bin/mkdir \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries\"\n#\n#/bin/cp /usr/local/lib/libgthread-2.0.0.dylib \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/\"\n#/bin/cp /usr/local/lib/libglib-2.0.0.dylib \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/\"\n#/bin/cp /usr/local/lib/libintl.8.dylib \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/\"\n#\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libgthread-2.0.0.dylib\" \"@loader_path/../Libraries/libgthread-2.0.0.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/MacOS/$TARGET_NAME\"\n#\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libgthread-2.0.0.dylib\" \"@loader_path/../Libraries/libgthread-2.0.0.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/libgthread-2.0.0.dylib\"\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libglib-2.0.0.dylib\" \"@loader_path/../Libraries/libglib-2.0.0.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/libgthread-2.0.0.dylib\"\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libintl.8.dylib\" \"@loader_path/../Libraries/libintl.8.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/libgthread-2.0.0.dylib\"\n#\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libglib-2.0.0.dylib\" \"@loader_path/../Libraries/libglib-2.0.0.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/libglib-2.0.0.dylib\"\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libintl.8.dylib\" \"@loader_path/../Libraries/libintl.8.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/libglib-2.0.0.dylib\"\n#\n#/usr/bin/install_name_tool -change \"/usr/local/lib/libintl.8.dylib\" \"@loader_path/../Libraries/libintl.8.dylib\" \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Libraries/libintl.8.dylib\"";
- };
- 7A637E5C0E1AF03E00290ECE /* Compile locale's */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Compile locale's";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "#compile po's to mo's\n\nfor i in po/*.po; do\n\tlang=`basename $i .po`\n\tmkdir -p \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Resources/locale/$lang/LC_MESSAGES\"\n\t/usr/local/bin/msgfmt -cf -o \"$TARGET_BUILD_DIR/$TARGET_NAME.$WRAPPER_EXTENSION/Contents/Resources/locale/$lang/LC_MESSAGES/skype4pidgin.mo\" $i\ndone";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 7A63824E0E40787E00290ECE /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D5B49B1048680CD000E48DA /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 7A6296400CC1B56A0064C5C6 /* SkypePlugin.m in Sources */,
- 7A6296CB0CC1B6D00064C5C6 /* PurpleSkypeAccount.m in Sources */,
- 7A6296CC0CC1B6D00064C5C6 /* PurpleSkypeAccountViewController.m in Sources */,
- 7A6296CD0CC1B6D00064C5C6 /* PurpleSkypeService.m in Sources */,
- 7A6296DD0CC1B7A20064C5C6 /* libskype.c in Sources */,
- 7A48E1BC0FB30D2B00144F0F /* SkypeJoinChatViewController.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- 1DEB913B08733D840010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- i386,
- ppc,
- );
- COPY_PHASE_STRIP = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "${HOME}/adium/build/Deployment-Debug",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_3)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_4)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_5)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_6)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_7)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_8)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_9)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_10)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_3)",
- "@bundle_path/../Frameworks/",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_3)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_4)",
- "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_5)",
- );
- FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"${HOME}/adium/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"${HOME}/adium/Plugins/Purple Service\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_3 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_5 = "\"$(SRCROOT)/../adium/Plugins/Purple Service\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_6 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/PlugIns/Purple.AdiumPlugin/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_8 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_9 = "\"$(SRCROOT)\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/PlugIns/Purple.AdiumPlugin/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_3 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/PlugIns/Purple.AdiumPlugin/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_4 = "\"/Volumes/Adium X 1.2b7/Adium.app/Contents/Frameworks\"";
- FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_5 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/Frameworks\"";
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_MODEL_TUNING = G4;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = SkypePlugin_Prefix.pch;
- GENERATE_MASTER_OBJECT_FILE = YES;
- HEADER_SEARCH_PATHS = (
- "$(HEADER_SEARCH_PATHS_QUOTED_1)",
- "$(HEADER_SEARCH_PATHS_QUOTED_2)",
- "$(HEADER_SEARCH_PATHS_QUOTED_3)",
- "$(HEADER_SEARCH_PATHS_QUOTED_4)",
- "$(HEADER_SEARCH_PATHS_QUOTED_5)",
- "$(HEADER_SEARCH_PATHS_QUOTED_6)",
- "${HOME}/libpurple/pidgin/libpurple",
- );
- HEADER_SEARCH_PATHS_QUOTED_1 = "\"${HOME}/adium/Frameworks/Adium Framework/Source\"";
- HEADER_SEARCH_PATHS_QUOTED_2 = "\"${HOME}/adium/Plugins/Purple Service\"";
- HEADER_SEARCH_PATHS_QUOTED_3 = "\"${HOME}/libpurple/Libraries/glib\"";
- HEADER_SEARCH_PATHS_QUOTED_4 = "\"${HOME}/libpurple/Libraries/glib/glib\"";
- HEADER_SEARCH_PATHS_QUOTED_5 = "\"${HOME}/libpurple/Libraries/glib/gmodule\"";
- HEADER_SEARCH_PATHS_QUOTED_6 = "\"${HOME}/libpurple/Libraries/glib/gthread\"";
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Application Support/Adium 2.0/Plugins/";
- LIBRARY_SEARCH_PATHS = /usr/local/lib;
- MACOSX_DEPLOYMENT_TARGET = 10.3;
- OTHER_CFLAGS = "-lgthread-2.0";
- OTHER_LDFLAGS = (
- "-lgthread-2.0",
- "-undefined",
- dynamic_lookup,
- );
- PRELINK_LIBS = "";
- PRODUCT_NAME = SkypePlugin;
- STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
- WRAPPER_EXTENSION = AdiumPlugin;
- ZERO_LINK = NO;
- };
- name = Debug;
- };
- 1DEB913C08733D840010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = (
- x86_64,
- i386,
- ppc,
- );
- COPY_PHASE_STRIP = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(HOME)/adium/Frameworks",
- "$(HOME)/adium/Build/Release",
- );
- FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SYSTEM_APPS_DIR)/Adium.app/Contents/Frameworks\"";
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
- GCC_MODEL_TUNING = G4;
- GCC_OPTIMIZATION_LEVEL = 2;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = SkypePlugin_Prefix.pch;
- GCC_THREADSAFE_STATICS = NO;
- GENERATE_MASTER_OBJECT_FILE = NO;
- HEADER_SEARCH_PATHS = (
- "$(HOME)/adium/Frameworks/libpurple.framework/Headers",
- "$(HOME)/adium/Frameworks/libglib.framework/Headers",
- "$(HOME)/adium/Frameworks/libjson-glib.framework/Headers",
- "$(HOME)/adium/build",
- "$(HOME)/adium/Frameworks/libintl.framework/Headers",
- "$(HOME)/adium/build/Release/AdiumLibpurple.framework/Headers",
- );
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Application Support/Adium 2.0/Plugins/";
- LD_DYLIB_INSTALL_NAME = "";
- LD_GENERATE_MAP_FILE = YES;
- LIBRARY_SEARCH_PATHS = "";
- LINK_WITH_STANDARD_LIBRARIES = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.4;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-undefined",
- dynamic_lookup,
- "-weak_framework",
- libglib,
- "-weak_framework",
- libpurple,
- "-weak_framework",
- libgobject,
- "-flat_namespace",
- );
- PRELINK_LIBS = "";
- PRODUCT_NAME = SkypePlugin;
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic;
- STRIP_STYLE = all;
- VALID_ARCHS = "i386 ppc x86_64";
- WRAPPER_EXTENSION = AdiumPlugin;
- ZERO_LINK = NO;
- };
- name = Release;
- };
- 1DEB913F08733D840010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Debug;
- };
- 1DEB914008733D840010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(NATIVE_ARCH_ACTUAL)";
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Release;
- };
- 7A6382520E40788000290ECE /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386";
- COPY_PHASE_STRIP = NO;
- EXECUTABLE_PREFIX = lib;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- INSTALL_PATH = /usr/local/lib;
- PREBINDING = NO;
- PRODUCT_NAME = SkypeNetPlugin;
- };
- name = Debug;
- };
- 7A6382530E40788000290ECE /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- ARCHS = "$(ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_32_BIT_PRE_XCODE_3_1 = "ppc i386";
- COPY_PHASE_STRIP = YES;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- EXECUTABLE_PREFIX = lib;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_MODEL_TUNING = G5;
- INSTALL_PATH = /usr/local/lib;
- PREBINDING = NO;
- PRODUCT_NAME = SkypeNetPlugin;
- ZERO_LINK = NO;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "SkypePlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB913B08733D840010E9CD /* Debug */,
- 1DEB913C08733D840010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "SkypePlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB913F08733D840010E9CD /* Debug */,
- 1DEB914008733D840010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 7A6382560E4078AC00290ECE /* Build configuration list for PBXNativeTarget "SkypeNetPlugin" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 7A6382520E40788000290ECE /* Debug */,
- 7A6382530E40788000290ECE /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 089C1669FE841209C02AAC07 /* Project object */;
-}
diff --git a/SkypePlugin_Prefix.pch b/SkypePlugin_Prefix.pch
deleted file mode 100644
index 765d03d..0000000
--- a/SkypePlugin_Prefix.pch
+++ /dev/null
@@ -1,7 +0,0 @@
-//
-// Prefix header for all source files of the 'SkypePlugin' target in the 'SkypePlugin' project.
-//
-
-#ifdef __OBJC__
- #import <Cocoa/Cocoa.h>
-#endif
diff --git a/TODO.txt b/TODO.txt
deleted file mode 100644
index a4b258d..0000000
--- a/TODO.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Todo:
-
-Show in multiuser chats if someone is offline with, eg "Eion Robb (offline)", or show a message saying when they went offline?
-show a window of currently active chats/latest chats
-show joining messages on new chat window creation
-Enter profile info, similar to how XMPP does it \ No newline at end of file
diff --git a/debug.c b/debug.c
deleted file mode 100644
index 69978e1..0000000
--- a/debug.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <glib.h>
-#include <debug.h>
-
-typedef struct
-{
- PurpleDebugLevel level;
- char *category;
- char *message;
-} SkypeDebugWrapper;
-
-void
-skype_debug_vargs(PurpleDebugLevel level, const char *category,
- const char *format, va_list args);
-void skype_debug(PurpleDebugLevel level, const gchar *category,
- const gchar *format, ...);
-
-void skype_debug_info(const gchar *category, const gchar *format, ...);
-void skype_debug_warning(const gchar *category, const gchar *format, ...);
-void skype_debug_error(const gchar *category, const gchar *format, ...);
-
-static gboolean skype_debug_cb(SkypeDebugWrapper *wrapper);
-
-void
-skype_debug_info(const gchar *category, const gchar *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- skype_debug_vargs(PURPLE_DEBUG_INFO, category, format, args);
- va_end(args);
-
-}
-
-void
-skype_debug_warning(const gchar *category, const gchar *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- skype_debug_vargs(PURPLE_DEBUG_WARNING, category, format, args);
- va_end(args);
-}
-
-void
-skype_debug_error(const gchar *category, const gchar *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- skype_debug_vargs(PURPLE_DEBUG_ERROR, category, format, args);
- va_end(args);
-}
-
-void
-skype_debug(PurpleDebugLevel level, const char *category,
- const char *format, ...)
-{
- va_list args;
-
- va_start(args, format);
- skype_debug_vargs(level, category, format, args);
- va_end(args);
-}
-
-void
-skype_debug_vargs(PurpleDebugLevel level, const char *category,
- const char *format, va_list args)
-{
- SkypeDebugWrapper *wrapper;
- gchar *message;
-
- if (purple_eventloop_get_ui_ops() == NULL)
- {
- return;
- }
-
- wrapper = g_new(SkypeDebugWrapper, 1);
- wrapper->level = level;
- wrapper->category = g_strdup(category);
- message = g_strdup_vprintf(format, args);
- wrapper->message = purple_strreplace(message, "%", "%%");
- g_free(message);
-
- purple_timeout_add(1, (GSourceFunc) skype_debug_cb, (gpointer)wrapper);
-}
-
-static gboolean
-skype_debug_cb(SkypeDebugWrapper *wrapper)
-{
- if (wrapper != NULL)
- {
- purple_debug(wrapper->level, wrapper->category, "%s", wrapper->message);
- g_free(wrapper->category);
- g_free(wrapper->message);
- g_free(wrapper);
- }
- return FALSE;
-}
diff --git a/libskype.c b/libskype.c
deleted file mode 100644
index c707e11..0000000
--- a/libskype.c
+++ /dev/null
@@ -1,3599 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- *
- * Skype API Terms of Use:
- * The following statement must be displayed in the documentation of this appliction:
- * This plugin "uses Skype Software" to display contacts, and chat to Skype users from within Pidgin
- * "This product uses the Skype API but is not endorsed, certified or otherwise approved in any way by Skype"
- *
- * The use of this plugin requries your acceptance of the Skype EULA (http://www.skype.com/intl/en/company/legal/eula/index.html)
- *
- * Skype is the trademark of Skype Limited
- */
-
-#define PURPLE_PLUGIN
-#define DBUS_API_SUBJECT_TO_CHANGE
-#define _GNU_SOURCE
-#define GETTEXT_PACKAGE "skype4pidgin"
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <glib.h>
-#include <glib/gstdio.h>
-#if __GNUC__
-# include <unistd.h>
-#endif
-#include <string.h>
-
-//#include <internal.h>
-#undef ENABLE_NLS
-#ifdef ENABLE_NLS
-# ifdef _WIN32
-# include <win32dep.h>
-# endif
-# include <glib/gi18n-lib.h>
-#else
-# define _(a) a
-#endif
-
-#ifndef G_GNUC_NULL_TERMINATED
-# if __GNUC__ >= 4
-# define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
-# else
-# define G_GNUC_NULL_TERMINATED
-# endif /* __GNUC__ >= 4 */
-#endif /* G_GNUC_NULL_TERMINATED */
-
-#include <notify.h>
-#include <core.h>
-#include <plugin.h>
-#include <version.h>
-#include <accountopt.h>
-#include <blist.h>
-#include <request.h>
-#include <cmds.h>
-#include <status.h>
-
-#ifndef INSTANTBIRD
-#include <mediamanager.h>
-gboolean skype_media_initiate(PurpleAccount *account, const char *who, PurpleMediaSessionType type);
-PurpleMediaCaps skype_get_media_caps(PurpleAccount *account, const char *who);
-static void skype_handle_incoming_call(PurpleConnection *gc, const char *callnumber_string);
-static void skype_handle_call_got_ended(const char *callnumber_string);
-static void skype_send_call_end(const char *callnumber_string);
-
-static GHashTable *call_media_hash = NULL;
-
-#endif
-
-typedef struct _SkypeBuddy {
- PurpleBuddy *buddy;
-
- //this bit used in Get Info
- gchar *handle;
- gchar *fullname;
- gchar *mood;
- struct tm *birthday;
- gchar *gender;
- gchar *language;
- gchar *country;
- gboolean is_video_capable;
- gboolean is_authorized;
- gboolean is_blocked;
- time_t last_online;
- gdouble timezone_offset;
- guint number_of_buddies;
- gchar *about;
-
- //this bit not used yet
- gchar *province;
- gchar *city;
- gchar *phone_home;
- gchar *phone_office;
- gchar *phone_mobile;
- gchar *homepage;
- gboolean has_call_equipment;
- gboolean is_voicemail_capable;
- gboolean is_callforward_active;
- gboolean can_leave_voicemail;
-
- //libpurple buddy stuff
- guint typing_stream;
-
- //whether we've populated all fields from skype
- gboolean is_skypebuddy_complete;
-} SkypeBuddy;
-
-typedef struct _SkypeChat {
- PurpleAccount *account;
- PurpleConversation *conv;
- gint prpl_chat_id;
-
- gchar *name;
- gchar **members;
- gchar *partner_handle;
- PurpleConversationType type;
- gchar *topic;
- gchar *friendlyname;
-
- int type_request_count; //count the number of times we request the chat type
-} SkypeChat;
-
-static GHashTable *chat_link_table = NULL;
-static GStaticMutex chat_link_mutex = G_STATIC_MUTEX_INIT;
-
-//This is used for incomming SMS status messages to be associated with a particular phone number
-static GHashTable *sms_convo_link_table = NULL;
-
-static guint protocol_version = 7;
-
-#define INCLUDED_LIBSKYPE_C
-#include "debug.c"
-#include "skype_messaging.c"
-
-static void plugin_init(PurplePlugin *plugin);
-gboolean plugin_load(PurplePlugin *plugin);
-gboolean plugin_unload(PurplePlugin *plugin);
-GList *skype_status_types(PurpleAccount *acct);
-void skype_login(PurpleAccount *acct);
-void skype_close(PurpleConnection *gc);
-int skype_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, PurpleMessageFlags flags);
-int skype_send_sms(PurpleConnection *gc, const gchar *who, const gchar *message, PurpleMessageFlags flags);
-static void hide_skype();
-void skype_get_info(PurpleConnection *gc, const gchar *username);
-gchar *skype_get_user_info(const gchar *username, const gchar *property);
-void skype_set_status(PurpleAccount *account, PurpleStatus *status);
-void skype_set_idle(PurpleConnection *gc, int time);
-void skype_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
-void skype_add_buddy_with_invite(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char *message);
-void skype_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
-void skype_add_deny(PurpleConnection *gc, const char *who);
-void skype_rem_deny(PurpleConnection *gc, const char *who);
-void skype_add_permit(PurpleConnection *gc, const char *who);
-void skype_rem_permit(PurpleConnection *gc, const char *who);
-void skype_keepalive(PurpleConnection *gc);
-gboolean skype_set_buddies(PurpleAccount *acct);
-void skype_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img);
-GList *skype_actions(PurplePlugin *plugin, gpointer context);
-void skype_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *userinfo, gboolean full);
-char *skype_status_text(PurpleBuddy *buddy);
-const char *skype_list_icon(PurpleAccount *account, PurpleBuddy *buddy);
-const char *skype_normalize(const PurpleAccount *acct, const char *who);
-void skype_update_buddy_alias(PurpleBuddy *buddy);
-gboolean skype_update_buddy_status(PurpleBuddy *buddy);
-void skype_get_account_alias(PurpleAccount *acct);
-const char *skype_get_account_username(PurpleAccount *acct);
-static PurpleAccount *skype_get_account(PurpleAccount *newaccount);
-void skype_update_buddy_icon(PurpleBuddy *buddy);
-static GList *skype_node_menu(PurpleBlistNode *node);
-static void skype_silence(PurplePlugin *plugin, gpointer data);
-void skype_slist_friend_check(gpointer buddy_pointer, gpointer friends_pointer);
-int skype_slist_friend_search(gconstpointer buddy_pointer, gconstpointer buddyname_pointer);
-static gboolean skype_check_missedmessages(PurpleAccount *account);
-static int skype_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags);
-static void skype_chat_leave(PurpleConnection *gc, int id);
-static void skype_chat_invite(PurpleConnection *gc, int id, const char *msg, const char *who);
-static void skype_initiate_chat(PurpleBlistNode *node, gpointer data);
-static void skype_set_chat_topic(PurpleConnection *gc, int id, const char *topic);
-gchar *skype_cb_real_name(PurpleConnection *gc, int id, const char *who);
-GList *skype_join_chat_info(PurpleConnection *gc);
-GHashTable *skype_join_chat_info_defaults(PurpleConnection *gc, const char *chat_name);
-void skype_alias_buddy(PurpleConnection *gc, const char *who, const char *alias);
-gboolean skype_offline_msg(const PurpleBuddy *buddy);
-//void skype_slist_remove_messages(gpointer buddy_pointer, gpointer unused);
-static void skype_plugin_update_check(void);
-void skype_plugin_update_callback(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
-gchar *timestamp_to_datetime(time_t timestamp);
-void skype_show_search_users(PurplePluginAction *action);
-static void skype_search_users(PurpleConnection *gc, const gchar *searchterm);
-void skype_searchresults_add_buddy(PurpleConnection *gc, GList *row, void *user_data);
-gchar *skype_strdup_withhtml(const gchar *src);
-void skype_join_chat(PurpleConnection *, GHashTable *components);
-gchar *skype_get_chat_name(GHashTable *components);
-static void skype_display_skype_credit(PurplePluginAction *action);
-unsigned int skype_send_typing(PurpleConnection *, const char *name, PurpleTypingState state);
-static PurpleCmdRet skype_cmd_leave(PurpleConversation *, const gchar *, gchar **, gchar **, void *);
-static PurpleCmdRet skype_cmd_topic(PurpleConversation *, const gchar *, gchar **, gchar **, void *);
-static PurpleCmdRet skype_cmd_kick(PurpleConversation *, const gchar *, gchar **, gchar **, void *);
-static PurpleCmdRet skype_cmd_kickban(PurpleConversation *, const gchar *, gchar **, gchar **, void *);
-int skype_send_raw(PurpleConnection *, const char *, int);
-void skype_group_buddy(PurpleConnection *, const char *who, const char *old_group, const char *new_group);
-void skype_rename_group(PurpleConnection *, const char *old_name, PurpleGroup *group, GList *moved_buddies);
-void skype_remove_group(PurpleConnection *, PurpleGroup *);
-int skype_find_group_with_name(const char *group_name_in);
-static gboolean skype_uri_handler(const char *proto, const char *cmd, GHashTable *params);
-void skype_buddy_free(PurpleBuddy *buddy);
-const char *skype_list_emblem(PurpleBuddy *buddy);
-SkypeBuddy *skype_buddy_new(PurpleBuddy *buddy);
-static void skype_request_auth_from_blist(PurpleBlistNode *node, gpointer data);
-static void skype_open_sms_im(PurpleBlistNode *node, gpointer data);
-void skype_got_buddy_icon_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
-gboolean skype_check_keepalive(PurpleConnection *gc);
-void skype_open_verify_mobile_number_step2(gpointer ignore, gchar *mobile_number);
-static void skype_open_verify_mobile_number(PurplePlugin *plugin, gpointer data);
-void skype_open_verify_mobile_number_step3(gpointer mobile_number, gchar *verification_code);
-gchar *skype_set_next_sms_number_for_conversation(PurpleConversation *conv, const gchar *who);
-gboolean skype_login_cb(gpointer acct);
-void skype_put_buddies_in_groups(void);
-gboolean groups_table_find_group(gpointer key, gpointer value, gpointer user_data);
-PurpleChat *skype_find_blist_chat(PurpleAccount *account, const char *name);
-gboolean skype_login_retry(PurpleAccount *acct);
-gboolean skype_login_part2(PurpleAccount *acct);
-typedef void (*_account_char_fn)(PurpleAccount *, const char *);
-void skype_set_public_alias(PurpleConnection *gc, const char *alias, _account_char_fn success_cb, _account_char_fn failure_cb);
-void skype_get_public_alias(PurpleConnection *gc, _account_char_fn success_cb, _account_char_fn failure_cb);
-
-#ifndef SKYPENET
-#ifdef _WIN32
-static void skype_open_skype_options(void);
-#endif
-void skype_call_number(gpointer ignore, gchar *number);
-void skype_call_number_request(PurplePlugin *plugin, gpointer data);
-void skype_program_update_callback(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
-static void skype_program_update_check(void);
-static void skype_send_file_from_blist(PurpleBlistNode *node, gpointer data);
-static void skype_call_user_from_blist(PurpleBlistNode *node, gpointer data);
-static void skype_end_call_from_blist(PurpleBlistNode *node, gpointer data);
-#endif
-
-
-
-
-PurplePluginProtocolInfo prpl_info = {
- /* options */
-#ifndef SKYPENET
-#if _WIN32 || __APPLE__ || SKYPE_DBUS || !USE_XVFB_SERVER
- OPT_PROTO_NO_PASSWORD|
-#endif
-#endif
-#if PURPLE_MAJOR_VERSION == 2 && PURPLE_MINOR_VERSION >= 8
- OPT_PROTO_INVITE_MESSAGE|
-#endif
- OPT_PROTO_REGISTER_NOSCREENNAME|OPT_PROTO_CHAT_TOPIC|OPT_PROTO_SLASH_COMMANDS_NATIVE,
-
- NULL, /* user_splits */
- NULL, /* protocol_options */
- {"png,gif,jpeg", 0, 0, 96, 96, 0, PURPLE_ICON_SCALE_SEND}, /* icon_spec */
- skype_list_icon, /* list_icon */
- skype_list_emblem, /* list_emblem */
- skype_status_text, /* status_text */
- skype_tooltip_text, /* tooltip_text */
- skype_status_types, /* status_types */
- skype_node_menu, /* blist_node_menu */
- skype_join_chat_info,/* chat_info */
- skype_join_chat_info_defaults,/* chat_info_defaults */
- skype_login, /* login */
- skype_close, /* close */
- skype_send_im, /* send_im */
- NULL, /* set_info */
- skype_send_typing, /* send_typing */
- skype_get_info, /* get_info */
- skype_set_status, /* set_status */
- skype_set_idle, /* set_idle */
- NULL, /* change_passwd */
-#if PURPLE_MAJOR_VERSION == 2 && PURPLE_MINOR_VERSION >= 8
- skype_add_buddy_with_invite, /* add_buddy */
-#else
- skype_add_buddy, /* add_buddy */
-#endif
- NULL, /* add_buddies */
- skype_remove_buddy, /* remove_buddy */
- NULL, /* remove_buddies */
- skype_add_permit, /* add_permit */
- skype_add_deny, /* add_deny */
- skype_rem_permit, /* rem_permit */
- skype_rem_deny, /* rem_deny */
- NULL, /* set_permit_deny */
- skype_join_chat, /* join_chat */
- NULL, /* reject chat invite */
- skype_get_chat_name, /* get_chat_name */
- skype_chat_invite, /* chat_invite */
- /*skype_chat_leave*/NULL, /* chat_leave */
- NULL, /* chat_whisper */
- skype_chat_send, /* chat_send */
- skype_keepalive, /* keepalive */
- NULL, /* register_user */
- NULL, /* get_cb_info */
- NULL, /* get_cb_away */
- skype_alias_buddy, /* alias_buddy */
- skype_group_buddy, /* group_buddy */
- skype_rename_group, /* rename_group */
- skype_buddy_free, /* buddy_free */
- NULL, /* convo_closed */
- skype_normalize, /* normalize */
- skype_set_buddy_icon,/* set_buddy_icon */
- skype_remove_group, /* remove_group */
- /*skype_cb_real_name*/NULL, /* get_cb_real_name */
- skype_set_chat_topic,/* set_chat_topic */
- NULL, /* find_blist_chat */
- NULL, /* roomlist_get_list */
- NULL, /* roomlist_cancel */
- NULL, /* roomlist_expand_category */
- NULL, /* can_receive_file */
- NULL, /* send_file */
- NULL, /* new_xfer */
- skype_offline_msg, /* offline_message */
- NULL, /* whiteboard_prpl_ops */
- skype_send_raw, /* send_raw */
- NULL, /* roomlist_room_serialize */
- NULL, /* unregister_user */
- NULL, /* send_attention */
- NULL, /* attention_types */
-#if PURPLE_MAJOR_VERSION == 2 && PURPLE_MINOR_VERSION == 1
- (gpointer)
-#endif
- sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL, /* get_account_text_table */
-#ifndef INSTANTBIRD
- skype_media_initiate,/* initiate_media */
- skype_get_media_caps,/* can_do_media */
-#else
- NULL, /* initiate_media */
- NULL, /* can_do_media */
-#endif
- NULL, /* get_moods */
- skype_set_public_alias, /* set_public_alias */
- skype_get_public_alias /* get_public_alias */
-#if PURPLE_MAJOR_VERSION == 2 && PURPLE_MINOR_VERSION >= 8
-, skype_add_buddy_with_invite, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
-#endif
-};
-
-static PurplePluginInfo info = {
- PURPLE_PLUGIN_MAGIC,
-/* PURPLE_MAJOR_VERSION,
- PURPLE_MINOR_VERSION,
-*/
- 2, 1,
- PURPLE_PLUGIN_PROTOCOL, /* type */
- NULL, /* ui_requirement */
- 0, /* flags */
- NULL, /* dependencies */
- PURPLE_PRIORITY_DEFAULT, /* priority */
-#ifdef SKYPENET
- "prpl-bigbrownchunx-skypenet",
- "Skype (Network)",
-#else
-#ifdef SKYPE_DBUS
- "prpl-bigbrownchunx-skype-dbus", /* id */
- "Skype (D-Bus)",
-#else
- "prpl-bigbrownchunx-skype", /* id */
- "Skype", /* name */
-#endif
-#endif
- "2.0", /* version */
- "Allows using Skype IM functions from within Pidgin", /* summary */
- "Allows using Skype IM functions from within Pidgin", /* description */
- "Eion Robb <eion@robbmob.com>", /* author */
- "http://eion.robbmob.com/", /* homepage */
- plugin_load, /* load */
- plugin_unload, /* unload */
- NULL, /* destroy */
- NULL, /* ui_info */
- &prpl_info, /* extra_info */
- NULL, /* prefs_info */
- skype_actions, /* actions */
- NULL, /* padding */
- NULL,
- NULL,
- NULL
-};
-
-static PurplePlugin *this_plugin;
-
-static void
-plugin_init(PurplePlugin *plugin)
-{
- PurpleAccountOption *option;
-
-#if ( _WIN32 || __APPLE__ ) && ENABLE_NLS
- bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
-#endif
-
-#if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 32
- if (glib_check_version(2, 32, 0))
- if (!g_thread_supported ())
- g_thread_init (NULL);
-#endif
- this_plugin = plugin;
- /* plugin's path at
- this_plugin->path */
-
-#ifdef SKYPENET
- option = purple_account_option_string_new(_("Server"), "host", "skype.robbmob.com");
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_int_new(_("Port"), "port", 5000);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
-#endif
-
- option = purple_account_option_bool_new(_("Show SkypeOut contacts as 'Online'"), "skypeout_online", TRUE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_bool_new(_("Make Skype online/offline when going online/offline"), "skype_sync", TRUE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_bool_new(_("Update Skype status message"), "update_status", TRUE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_bool_new(_("Display video capability status"), "video_capable", TRUE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- //option = purple_account_option_bool_new(_("Automatically check for updates"), "check_for_updates", TRUE);
- //prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_bool_new(_("Automatically reject all authorization requests"), "reject_all_auths", FALSE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
-#ifndef SKYPENET
- option = purple_account_option_bool_new(_("Auto-start Skype if not running"), "skype_autostart", TRUE);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_string_new(_("Skype Path"), "skype_path", "");
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
-#endif
-
- //leave
- purple_cmd_register("leave", "", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_IM |
- PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
- PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
- plugin->info->id, skype_cmd_leave,
- _("leave [channel]: Leave the chat"), NULL);
- //topic
- purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
- plugin->info->id, skype_cmd_topic,
- _("topic [&lt;new topic&gt;]: View or change the topic"),
- NULL);
- //call, as in call person
- //kick
- purple_cmd_register("kick", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY,
- plugin->info->id, skype_cmd_kick,
- _("kick &lt;user&gt; [room]: Kick a user from the room."),
- NULL);
- //kickban
- purple_cmd_register("kickban", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY,
- plugin->info->id, skype_cmd_kickban,
- _("kick &lt;user&gt; [room]: Kick a user from the room."),
- NULL);
-
- purple_signal_connect(purple_get_core(), "uri-handler", plugin, PURPLE_CALLBACK(skype_uri_handler), NULL);
-}
-
-/* copied from oscar.c to be libpurple 2.1 compatible */
-static PurpleAccount *
-find_acct(const char *prpl, const char *acct_id)
-{
- PurpleAccount *acct = NULL;
-
- /* If we have a specific acct, use it */
- if (acct_id) {
- acct = purple_accounts_find(acct_id, prpl);
- if (acct && !purple_account_is_connected(acct))
- acct = NULL;
- } else { /* Otherwise find an active account for the protocol */
- GList *l = purple_accounts_get_all();
- while (l) {
- if (!strcmp(prpl, purple_account_get_protocol_id(l->data))
- && purple_account_is_connected(l->data)) {
- acct = l->data;
- break;
- }
- l = l->next;
- }
- }
-
- return acct;
-}
-
-static PurpleCmdRet
-skype_cmd_leave(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
-{
- PurpleConnection *gc = NULL;
- int id = -1;
-
- gc = purple_conversation_get_gc(conv);
- id = purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv));
-
- if (gc == NULL || id == -1)
- return PURPLE_CMD_RET_FAILED;
-
- skype_chat_leave(gc, id);
-
- return PURPLE_CMD_RET_OK;
-}
-
-static PurpleCmdRet
-skype_cmd_topic(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
-{
- PurpleConnection *gc = NULL;
- int id = -1;
-
- gc = purple_conversation_get_gc(conv);
- id = purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv));
-
- if (gc == NULL || id == -1)
- return PURPLE_CMD_RET_FAILED;
-
- skype_set_chat_topic(gc, id, args ? args[0] : NULL);
-
- return PURPLE_CMD_RET_OK;
-}
-
-static PurpleCmdRet
-skype_cmd_kick(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
-{
- gchar *temp;
- gchar *chat_id;
-
- chat_id = (gchar *)g_hash_table_lookup(conv->data, "chat_id");
- temp = skype_send_message("ALTER CHAT %s KICK %s", chat_id, args[0]);
- if (!temp || !strlen(temp))
- {
- g_free(temp);
- return PURPLE_CMD_RET_FAILED;
- }
- return PURPLE_CMD_RET_OK;
-}
-
-static PurpleCmdRet
-skype_cmd_kickban(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
-{
- gchar *temp;
- gchar *chat_id;
-
- chat_id = (gchar *)g_hash_table_lookup(conv->data, "chat_id");
- temp = skype_send_message("ALTER CHAT %s KICKBAN %s", chat_id, args[0]);
- if (!temp || !strlen(temp))
- {
- g_free(temp);
- return PURPLE_CMD_RET_FAILED;
- }
- return PURPLE_CMD_RET_OK;
-}
-
-PURPLE_INIT_PLUGIN(skype, plugin_init, info);
-
-
-
-static PurpleAccount *
-skype_get_account(PurpleAccount *newaccount)
-{
- static PurpleAccount* account = NULL;
- if (newaccount != NULL)
- account = newaccount;
- return account;
-}
-
-#if 0
-void skype_ft_debug(PurpleXfer *xfer) {printf("%s\n", xfer->account->protocol_id);}
-void skype_ft_new_xfer(PurpleXfer *xfer) {printf("skype_ft_new_xfer\n");skype_ft_debug(xfer);}
-void skype_ft_destroy(PurpleXfer *xfer) {printf("skype_ft_destroy\n");skype_ft_debug(xfer);}
-void skype_ft_add_xfer(PurpleXfer *xfer) {printf("skype_ft_add_xfer\n");skype_ft_debug(xfer);}
-void skype_ft_update_progress(PurpleXfer *xfer, double percent) {printf("skype_ft_update_progress\n");skype_ft_debug(xfer);}
-void skype_ft_cancel_local(PurpleXfer *xfer) {printf("skype_ft_cancel_local\n");skype_ft_debug(xfer);}
-void skype_ft_cancel_remote(PurpleXfer *xfer) {printf("skype_ft_cancel_remote\n");skype_ft_debug(xfer);}
-
-gboolean
-plugin_load(PurplePlugin *plugin)
-{
- PurpleXferUiOps *ops = purple_xfers_get_ui_ops();
- ops->new_xfer = skype_ft_new_xfer;
- ops->destroy = skype_ft_destroy;
- ops->add_xfer = skype_ft_add_xfer;
- ops->update_progress = skype_ft_update_progress;
- ops->cancel_local = skype_ft_cancel_local;
- ops->cancel_remote = skype_ft_cancel_remote;
- return TRUE;
-}
-#else
-gboolean
-plugin_load(PurplePlugin *plugin)
-{
- return TRUE;
-}
-#endif
-
-gboolean
-plugin_unload(PurplePlugin *plugin)
-{
- return TRUE;
-}
-
-static GList *
-skype_node_menu(PurpleBlistNode *node)
-{
- GList *m = NULL;
- PurpleMenuAction *act;
- PurpleBuddy *buddy;
- SkypeBuddy *sbuddy;
- gchar *temp;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- buddy = (PurpleBuddy *)node;
- sbuddy = (SkypeBuddy *)buddy->proto_data;
-
-#ifndef SKYPENET
-#ifndef __APPLE__
- act = purple_menu_action_new(_("_Send File"),
- PURPLE_CALLBACK(skype_send_file_from_blist),
- NULL, NULL);
- m = g_list_append(m, act);
-#endif
-#ifndef INSTANTBIRD
- if (!purple_media_manager_get())
- {
- gint call_id = 0, i, j;
- temp = skype_send_message("SEARCH ACTIVECALLS");
- if (temp && *temp && temp[5] && temp[6])
- {
- gchar **ids = g_strsplit(&temp[6], ", ", 0);
- gchar **buddy_calls = NULL;
- g_free(temp);
- temp = skype_send_message("SEARCH CALLS %s", buddy->name);
- if (temp && *temp && temp[5] && temp[6])
- {
- buddy_calls = g_strsplit(&temp[6], ", ", 0);
- for (i = 0; ids[i]; i++)
- {
- for (j = 0; buddy_calls[j]; j++)
- {
- if (g_str_equal(ids[i], buddy_calls[j]))
- {
- call_id = atoi(ids[i]);
- break;
- }
- }
- if (call_id)
- break;
- }
- }
- g_free(temp);
- g_strfreev(buddy_calls);
- g_strfreev(ids);
- }
-
- if (call_id)
- {
- act = purple_menu_action_new(_("End Call"),
- PURPLE_CALLBACK(skype_end_call_from_blist),
- GINT_TO_POINTER(call_id), NULL);
- m = g_list_append(m, act);
- } else {
- act = purple_menu_action_new(_("Call..."),
- PURPLE_CALLBACK(skype_call_user_from_blist),
- NULL, NULL);
- m = g_list_append(m, act);
- }
- }
-#endif
-#endif
- act = purple_menu_action_new(_("Initiate _Chat"),
- PURPLE_CALLBACK(skype_initiate_chat),
- NULL, NULL);
- m = g_list_append(m, act);
-
- if (buddy->name[0] == '+' || (sbuddy && sbuddy->phone_mobile))
- {
- act = purple_menu_action_new(_("Send SMS"),
- PURPLE_CALLBACK(skype_open_sms_im),
- NULL, NULL);
- m = g_list_append(m, act);
- }
-
- if (!PURPLE_BUDDY_IS_ONLINE(buddy))
- {
- temp = skype_send_message("GET USER %s BUDDYSTATUS", buddy->name);
- purple_debug_info("skype", "Offline buddy's status is %c\n", temp[18+strlen(buddy->name)]);
- if (temp[18+strlen(buddy->name)] == '2')
- {
- act = purple_menu_action_new(_("Re-request authorization"),
- PURPLE_CALLBACK(skype_request_auth_from_blist),
- NULL, NULL);
- m = g_list_append(m, act);
- }
- g_free(temp);
- }
- } else if (PURPLE_BLIST_NODE_IS_CHAT(node))
- {
-
- } else if (PURPLE_BLIST_NODE_IS_GROUP(node))
- {
- act = purple_menu_action_new(_("Initiate _Chat"),
- PURPLE_CALLBACK(skype_initiate_chat),
- NULL, NULL);
- m = g_list_append(m, act);
- }
- return m;
-}
-
-#ifndef SKYPENET
-static void
-skype_send_file_from_blist(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- buddy = (PurpleBuddy *) node;
- if (PURPLE_BUDDY_IS_ONLINE(buddy))
- {
- skype_send_message_nowait("OPEN FILETRANSFER %s", buddy->name);
- }
- }
-}
-
-static void
-skype_call_user_from_blist(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- buddy = (PurpleBuddy *) node;
- skype_send_message_nowait("CALL %s", buddy->name);
- }
-}
-
-static void
-skype_end_call_from_blist(PurpleBlistNode *node, gpointer data)
-{
- gint call_id;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- call_id = GPOINTER_TO_INT(data);
- skype_send_message_nowait("ALTER CALL %d HANGUP", call_id);
- }
-}
-#endif
-
-const char *
-skype_normalize(const PurpleAccount *acct, const char *who)
-{
- static gchar *last_normalize = NULL;
- g_free(last_normalize);
- last_normalize = g_utf8_strdown(who, -1);
- return last_normalize;
-}
-
-GList *
-skype_actions(PurplePlugin *plugin, gpointer context)
-{
- GList *m = NULL;
- PurpleMenuAction *act;
-
-#ifndef SKYPENET
- act = purple_menu_action_new(_("Hide Skype"),
- PURPLE_CALLBACK(skype_silence),
- NULL, NULL);
- m = g_list_append(m, act);
- act = purple_menu_action_new(_("Check for Skype updates..."),
- PURPLE_CALLBACK(skype_program_update_check),
- NULL, NULL);
- m = g_list_append(m, act);
-#endif
- if (this_plugin != NULL && this_plugin->path != NULL)
- {
- act = purple_menu_action_new(_("Check for plugin updates..."),
- PURPLE_CALLBACK(skype_plugin_update_check),
- NULL, NULL);
- m = g_list_append(m, act);
- }
-
- act = purple_menu_action_new(_("Search for buddies..."),
- PURPLE_CALLBACK(skype_show_search_users),
- NULL, NULL);
- m = g_list_append(m, act);
-
- act = purple_menu_action_new(_("Check Skype balance..."),
- PURPLE_CALLBACK(skype_display_skype_credit),
- NULL, NULL);
- m = g_list_append(m, act);
-#ifndef SKYPENET
- act = purple_menu_action_new(_("Call..."),
- PURPLE_CALLBACK(skype_call_number_request),
- NULL, NULL);
- m = g_list_append(m, act);
-
-#ifdef _WIN32
- act = purple_menu_action_new(_("Open Skype Options..."),
- PURPLE_CALLBACK(skype_open_skype_options),
- NULL, NULL);
- m = g_list_append(m, act);
-#endif
-#endif
-
- act = purple_menu_action_new(_("Verify mobile number..."),
- PURPLE_CALLBACK(skype_open_verify_mobile_number),
- NULL, NULL);
- m = g_list_append(m, act);
-
- return m;
-}
-
-#if !defined SKYPENET && defined _WIN32
-static void
-skype_open_skype_options(void)
-{
- skype_send_message_nowait("OPEN OPTIONS");
-}
-#endif
-
-static void
-skype_silence(PurplePlugin *plugin, gpointer data)
-{
- skype_send_message_nowait("SET SILENT_MODE ON");
- skype_send_message_nowait("MINIMIZE");
- hide_skype();
-}
-
-static void
-skype_open_verify_mobile_number(PurplePlugin *plugin, gpointer data)
-{
- purple_request_input(plugin, _("Verify mobile number..."), _("Enter the mobile phone number to send verification SMS to"), NULL,
- NULL, FALSE, FALSE, NULL, _("OK"), G_CALLBACK(skype_open_verify_mobile_number_step2), _("_Cancel"),
- NULL, NULL, NULL, NULL, plugin);
-}
-
-void
-skype_open_verify_mobile_number_step2(gpointer plugin, gchar *mobile_number)
-{
- skype_send_message_nowait("CREATE SMS CONFIRMATION_CODE_REQUEST %s", mobile_number);
- purple_request_input(plugin, _("Verify mobile number..."), _("Enter the verification code which was sent to your mobile"), NULL,
- NULL, FALSE, FALSE, NULL, _("OK"), G_CALLBACK(skype_open_verify_mobile_number_step3), _("_Cancel"),
- NULL, NULL, NULL, NULL, mobile_number);
-}
-
-void
-skype_open_verify_mobile_number_step3(gpointer mobile_number, gchar *verification_code)
-{
- skype_send_message_nowait("CREATE SMS CONFIRMATION_CODE_SUBMIT %s", mobile_number);
-}
-
-static void
-skype_plugin_update_check(void)
-{
- gchar *basename;
- struct stat *filestat = g_new(struct stat, 1);
-
- //this_plugin is the PidginPlugin
- if (this_plugin == NULL || this_plugin->path == NULL || filestat == NULL || g_stat(this_plugin->path, filestat) == -1)
- {
- purple_notify_warning(this_plugin, "Warning", "Could not check for updates", NULL);
- } else {
- basename = g_path_get_basename(this_plugin->path);
- purple_util_fetch_url(g_strconcat("http://eion.robbmob.com/version?version=", basename, NULL),
- TRUE, NULL, FALSE, skype_plugin_update_callback, (gpointer)filestat);
- }
-}
-
-void
-skype_plugin_update_callback(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message)
-{
- time_t mtime = ((struct stat *) user_data)->st_mtime;
- time_t servertime = atoi(url_text);
- skype_debug_info("skype", "Server filemtime: %d, Local filemtime: %d\n", servertime, mtime);
- if (servertime > mtime)
- {
- purple_notify_info(this_plugin, _("New Version Available"), _("There is a newer version of the Skype plugin available for download."),
- g_strconcat(_("Your version"),": ",timestamp_to_datetime(mtime),"\n",_("Latest version"),": ",timestamp_to_datetime(servertime),"\nLatest version available from: ", this_plugin->info->homepage, NULL));
- } else {
- purple_notify_info(this_plugin, _("No updates found"), _("No updates found"), _("You have the latest version of the Skype plugin"));
- }
-}
-
-#ifndef SKYPENET
-static void
-skype_program_update_check(void)
-{
- /*
- Windows:
- http://ui.skype.com/ui/0/3.5.0.239/en/getnewestversion
-
- Linux:
- http://ui.skype.com/ui/2/2.0.0.13/en/getnewestversion
-
- Mac:
- http://ui.skype.com/ui/3/2.6.0.151/en/getnewestversion
-
- User-Agent: Skype
- */
-
- gchar *version;
- gchar *temp;
- gchar version_url[60];
- int platform_number;
-
-#ifdef _WIN32
- platform_number = 0;
-#else
-# ifdef __APPLE__
- platform_number = 3;
-# else
- platform_number = 2;
-# endif
-#endif
-
- temp = skype_send_message("GET SKYPEVERSION");
- version = g_strdup(&temp[13]);
- g_free(temp);
-
- sprintf(version_url, "http://ui.skype.com/ui/%d/%s/en/getnewestversion", platform_number, version);
- purple_util_fetch_url(version_url, TRUE, "Skype", TRUE, skype_program_update_callback, (gpointer)version);
-}
-
-void
-skype_program_update_callback(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message)
-{
- gchar *version = (gchar *)user_data;
- int v1, v2, v3, v4;
- int s1, s2, s3, s4;
- gboolean newer_version = FALSE;
-
- sscanf(version, "%d.%d.%d.%d", &v1, &v2, &v3, &v4);
- sscanf(url_text, "%d.%d.%d.%d", &s1, &s2, &s3, &s4);
-
- if (s1 > v1)
- newer_version = TRUE;
- else if (s1 == v1 && s2 > v2)
- newer_version = TRUE;
- else if (s1 == v1 && s2 == v2 && s3 > v3)
- newer_version = TRUE;
- else if (s1 == v1 && s2 == v2 && s3 == v3 && s4 > v4)
- newer_version = TRUE;
-
- if (newer_version)
- {
- purple_notify_info(this_plugin, _("New Version Available"), _("There is a newer version of Skype available for download"), g_strconcat(_("Your version"),": ", version, "\n",_("Latest version"),": ", url_text, "\n\nhttp://www.skype.com/go/download", NULL));
- } else {
- purple_notify_info(this_plugin, _("No updates found"), _("No updates found"), _("You have the latest version of Skype"));
- }
-}
-
-void
-skype_call_number_request(PurplePlugin *plugin, gpointer data)
-{
- //http://developer.pidgin.im/doxygen/dev/html/request_8h.html#80ea2f9ad3a45471e05f09a2b5abcd75
- purple_request_input(plugin, _("Call..."), _("Enter the phone number or Skype buddy name to call"), NULL,
- NULL, FALSE, FALSE, NULL, _("Call..."), G_CALLBACK(skype_call_number), _("_Cancel"),
- NULL, NULL, NULL, NULL, NULL);
-}
-
-void
-skype_call_number(gpointer ignore, gchar *number)
-{
- skype_send_message_nowait("CALL %s", number);
-}
-#endif
-
-GList *
-skype_status_types(PurpleAccount *acct)
-{
- GList *types;
- PurpleStatusType *status;
-
- skype_debug_info("skype", "returning status types\n");
-
- types = NULL;
-
- /* Statuses are almost all the same. Define a macro to reduce code repetition. */
-#define _SKYPE_ADD_NEW_STATUS(prim,id,name) status = \
- purple_status_type_new_with_attrs( \
- prim, /* PurpleStatusPrimitive */ \
- id, /* id */ \
- _(name),/* name */ \
- TRUE, /* savable */ \
- TRUE, /* user_settable */ \
- FALSE, /* not independent */ \
- \
- /* Attributes - each status can have a message. */ \
- "message", \
- _("Message"), \
- purple_value_new(PURPLE_TYPE_STRING), \
- NULL); \
- \
- \
- types = g_list_append(types, status)
-
-
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE, "ONLINE", "Online");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE, "SKYPEME", "SkypeMe");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_AWAY, "AWAY", "Away");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_EXTENDED_AWAY, "NA", "Not Available");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_UNAVAILABLE, "DND", "Do Not Disturb");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE, "INVISIBLE", "Invisible");
- //_SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE, "Offline");
-
- //User status could be 'logged out' - make not settable
- status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, "LOGGEDOUT", _("Logged out"), FALSE, FALSE, FALSE);
- types = g_list_append(types, status);
-
- //User could be a SkypeOut contact
- if (purple_account_get_bool(acct, "skypeout_online", TRUE))
- {
- status = purple_status_type_new_full(PURPLE_STATUS_MOBILE, "SKYPEOUT", _("SkypeOut"), FALSE, FALSE, FALSE);
- } else {
- status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, "SKYPEOUT", _("SkypeOut"), FALSE, FALSE, FALSE);
- }
- types = g_list_append(types, status);
-
- //Offline people shouldn't have status messages
- status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, "OFFLINE", _("Offline"), TRUE, TRUE, FALSE);
- types = g_list_append(types, status);
-
- return types;
-}
-
-void
-skype_get_all_buddy_info(PurpleBuddy *buddy)
-{
- skype_send_message_nowait("GET USER %s MOOD_TEXT", buddy->name);
- skype_send_message_nowait("GET USER %s ABOUT", buddy->name);
-
- skype_send_message_nowait("GET USER %s SEX", buddy->name);
- skype_send_message_nowait("GET USER %s BIRTHDAY", buddy->name);
- skype_send_message_nowait("GET USER %s LANGUAGE", buddy->name);
- skype_send_message_nowait("GET USER %s COUNTRY", buddy->name);
- skype_send_message_nowait("GET USER %s TIMEZONE", buddy->name);
- skype_send_message_nowait("GET USER %s PROVINCE", buddy->name);
- skype_send_message_nowait("GET USER %s CITY", buddy->name);
- skype_send_message_nowait("GET USER %s PHONE_MOBILE", buddy->name);
- skype_send_message_nowait("GET USER %s PHONE_OFFICE", buddy->name);
- skype_send_message_nowait("GET USER %s PHONE_HOME", buddy->name);
- skype_send_message_nowait("GET USER %s HOMEPAGE", buddy->name);
-
- skype_send_message_nowait("GET USER %s IS_VIDEO_CAPABLE", buddy->name);
- skype_send_message_nowait("GET USER %s PHONE_MOBILE", buddy->name);
- skype_send_message_nowait("GET USER %s HASCALLEQUIPMENT", buddy->name);
- skype_send_message_nowait("GET USER %s IS_VOICEMAIL_CAPABLE", buddy->name);
- skype_send_message_nowait("GET USER %s CAN_LEAVE_VM", buddy->name);
- skype_send_message_nowait("GET USER %s ISAUTHORIZED", buddy->name);
- skype_send_message_nowait("GET USER %s ISBLOCKED", buddy->name);
- skype_send_message_nowait("GET USER %s LASTONLINETIMESTAMP", buddy->name);
- skype_send_message_nowait("GET USER %s NROF_AUTHED_BUDDIES", buddy->name);
-}
-
-gboolean
-skype_set_buddies(PurpleAccount *acct)
-{
- char *friends_text;
- gchar **mood_buddyname;
- char **friends;
- char **full_friends_list;
- GSList *existing_friends;
- PurpleBuddy *buddy;
- SkypeBuddy *sbuddy;
- PurpleGroup *skype_group = NULL;
- PurpleGroup *skypeout_group = NULL;
- int i;
-
- friends_text = skype_send_message("GET AUTH_CONTACTS_PROFILES");
- if (!friends_text || friends_text[0] == '\0')
- {
- g_free(friends_text);
- } else {
- full_friends_list = g_strsplit((strchr(friends_text, ' ')+1), ";", 0);
- g_free(friends_text);
- if (full_friends_list && full_friends_list[0])
- {
- //in the format of: username;full name;phone;office phone;mobile phone;
- // online status;friendly name;voicemail;mood
- // (comma-seperated lines, usernames can have comma's)
-
- for (i=0; full_friends_list[i]; i+=8)
- {
- skype_debug_info("skype","Search buddy %s\n", full_friends_list[i]);
- buddy = purple_find_buddy(acct, full_friends_list[i]);
- if (buddy != NULL)
- {
- //the buddy was already in the list
- sbuddy = g_new0(SkypeBuddy, 1);
- sbuddy->handle = g_strdup(buddy->name);
- sbuddy->buddy = buddy;
- buddy->proto_data = sbuddy;
- skype_debug_info("skype","Buddy already in list: %s (%s)\n", buddy->name, full_friends_list[i]);
- } else {
- skype_debug_info("skype","Buddy not in list %s\n", full_friends_list[i]);
- buddy = purple_buddy_new(acct, full_friends_list[i], NULL);
- sbuddy = g_new0(SkypeBuddy, 1);
- sbuddy->handle = g_strdup(buddy->name);
- sbuddy->buddy = buddy;
- buddy->proto_data = sbuddy;
-
- //find out what group this buddy is in
- //for now, dump them into a default group, until skype tells us where they belong
- if (full_friends_list[i][0] == '+')
- {
-#ifndef __APPLE__
- if (skypeout_group == NULL)
- {
- skypeout_group = purple_find_group("SkypeOut");
- if (skypeout_group == NULL)
- {
- skypeout_group = purple_group_new("SkypeOut");
- if (skypeout_group == NULL)
- skype_debug_error("skype", "SkypeOut group is NULL!\n");
- purple_blist_add_group(skypeout_group, NULL);
- }
- }
-#endif
- purple_blist_add_buddy(buddy, NULL, skypeout_group, NULL);
- }
- else
- {
-#ifndef __APPLE__
- if (skype_group == NULL)
- {
- skype_group = purple_find_group("Skype");
- if (skype_group == NULL)
- {
- skype_group = purple_group_new("Skype");
- if (skype_group == NULL)
- skype_debug_error("skype", "Skype group is NULL!\n");
- purple_blist_add_group(skype_group, NULL);
- }
- }
-#endif
- purple_blist_add_buddy(buddy, NULL, skype_group, NULL);
- }
- }
-
- //in the format of: username;full name;phone;office phone;mobile phone;
- // online status;friendly name;voicemail;mood
- sbuddy->fullname = g_strdup(full_friends_list[i+1]);
- if (!purple_buddy_get_server_alias(buddy))
- purple_blist_server_alias_buddy(buddy, sbuddy->fullname);
- sbuddy->phone_home = g_strdup(full_friends_list[i+2]);
- sbuddy->phone_office = g_strdup(full_friends_list[i+3]);
- sbuddy->phone_mobile = g_strdup(full_friends_list[i+4]);
-
- if (full_friends_list[i+6] && *full_friends_list[i+6])
- purple_blist_server_alias_buddy(buddy, full_friends_list[i+6]);
- sbuddy->is_voicemail_capable = g_str_equal(full_friends_list[i+7], "TRUE")?TRUE:FALSE;
- if (full_friends_list[i+8] == NULL)
- {
- sbuddy->mood = g_strdup("");
- } else {
- mood_buddyname = g_strsplit(full_friends_list[i+8], ",", 2);
- if (mood_buddyname[0] == NULL)
- {
- sbuddy->mood = g_strdup("");
- full_friends_list[i+8] = NULL;
- } else {
- sbuddy->mood = g_strdup(mood_buddyname[0]);
- purple_util_chrreplace(sbuddy->mood, '\n', ' ');
- if (mood_buddyname[1] && mood_buddyname[1][0] != '\0' && full_friends_list[i+8])
- {
- g_free(full_friends_list[i+8]);
- full_friends_list[i+8] = g_strdup(mood_buddyname[1]);
- } else {
- full_friends_list[i+8] = NULL;
- }
- }
- g_strfreev(mood_buddyname);
- }
-
- //Do this one last to update buddy list
- if (g_str_equal(full_friends_list[i+5], "SKYPEOUT") &&
- (!purple_account_get_bool(acct, "skypeout_online", TRUE)))
- {
- purple_prpl_got_user_status(acct, buddy->name, "OFFLINE", NULL);
- } else {
- purple_prpl_got_user_status(acct, buddy->name, full_friends_list[i+5], NULL);
- }
- skype_send_message_nowait("GET USER %s IS_VIDEO_CAPABLE", buddy->name);
- }
- g_strfreev(full_friends_list);
- skype_put_buddies_in_groups();
- return FALSE;
- }
- g_strfreev(full_friends_list);
- }
-
- friends_text = skype_send_message("SEARCH FRIENDS");
- if (strlen(friends_text) == 0)
- {
- g_free(friends_text);
- return FALSE;
- }
- //skip first word (should be USERS) and seperate by comma-space
- friends = g_strsplit((strchr(friends_text, ' ')+1), ", ", 0);
- g_free(friends_text);
- if (friends == NULL || friends[0] == NULL)
- {
- return FALSE;
- }
-
- //Remove from libpurple buddy list if not in skype friends list
- existing_friends = purple_find_buddies(acct, NULL);
- g_slist_foreach(existing_friends, (GFunc)skype_slist_friend_check, friends);
-
- //grab the list of buddy's again since they could have changed
- existing_friends = purple_find_buddies(acct, NULL);
-
- for (i=0; friends[i]; i++)
- {
- //If already in list, dont recreate, reuse
- skype_debug_info("skype", "Searching for friend %s\n", friends[i]);
- buddy = purple_find_buddy(acct, friends[i]);
-
- if (buddy != NULL)
- {
- //the buddy was already in the list
- buddy->proto_data = skype_buddy_new(buddy);
- skype_debug_info("skype","Buddy already in list: %s (%s)\n", buddy->name, friends[i]);
- } else {
- skype_debug_info("skype","Buddy not in list %s\n", friends[i]);
- buddy = purple_buddy_new(acct, friends[i], NULL);
- buddy->proto_data = skype_buddy_new(buddy);
-
- //find out what group this buddy is in
- //for now, dump them into a default group, until skype tells us where they belong
- if (friends[i][0] == '+')
- {
-#ifndef __APPLE__
- if (skypeout_group == NULL)
- {
- skypeout_group = purple_find_group("SkypeOut");
- if (skypeout_group == NULL)
- {
- skypeout_group = purple_group_new("SkypeOut");
- purple_blist_add_group(skypeout_group, NULL);
- }
- }
-#endif
- purple_blist_add_buddy(buddy, NULL, skypeout_group, NULL);
- }
- else
- {
-#ifndef __APPLE__
- if (skype_group == NULL)
- {
- skype_group = purple_find_group("Skype");
- if (skype_group == NULL)
- {
- skype_group = purple_group_new("Skype");
- purple_blist_add_group(skype_group, NULL);
- }
- }
-#endif
- purple_blist_add_buddy(buddy, NULL, skype_group, NULL);
- }
- }
- skype_update_buddy_status(buddy);
- skype_update_buddy_alias(buddy);
- purple_prpl_got_user_idle(acct, buddy->name, FALSE, 0);
-
- //skype_update_buddy_icon(buddy);
- }
-
- //special case, if we're on our own buddy list
- if ((buddy = purple_find_buddy(acct, skype_get_account_username(acct))))
- {
- skype_update_buddy_status(buddy);
- skype_update_buddy_alias(buddy);
- purple_prpl_got_user_idle(acct, buddy->name, FALSE, 0);
- //skype_update_buddy_icon(buddy);
- }
-
- skype_debug_info("skype", "Friends Count: %d\n", i);
- g_strfreev(friends);
-
- skype_put_buddies_in_groups();
-
- return FALSE;
-}
-
-void
-skype_slist_friend_check(gpointer buddy_pointer, gpointer friends_pointer)
-{
- int i;
- PurpleBuddy *buddy = (PurpleBuddy *)buddy_pointer;
- char **friends = (char **)friends_pointer;
-
- if (g_str_equal(buddy->name, skype_get_account_username(buddy->account)))
- {
- //we must have put ourselves on our own list in pidgin, ignore
- return;
- }
-
- for(i=0; friends[i]; i++)
- {
- if (strlen(friends[i]) == 0)
- continue;
- if (g_str_equal(buddy->name, friends[i]))
- return;
- }
- skype_debug_info("skype", "removing buddy %d with name %s\n", buddy, buddy->name);
- purple_blist_remove_buddy(buddy);
-}
-
-int
-skype_slist_friend_search(gconstpointer buddy_pointer, gconstpointer buddyname_pointer)
-{
- PurpleBuddy *buddy;
- gchar *buddyname;
-
- if (buddy_pointer == NULL)
- return -1;
- if (buddyname_pointer == NULL)
- return 1;
-
- buddy = (PurpleBuddy *)buddy_pointer;
- buddyname = (gchar *)buddyname_pointer;
-
- if (buddy->name == NULL)
- return -1;
-
- return strcmp(buddy->name, buddyname);
-}
-
-//create the memmem() function for platforms that dont support it
-#if __APPLE__ || _WIN32
-#ifndef _LIBC
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-#undef memmem
-
-void *memmem (const void *, size_t, const void *, size_t);
-
-/* Return the first occurrence of NEEDLE in HAYSTACK. */
-void *
-memmem (haystack, haystack_len, needle, needle_len)
- const void *haystack;
- size_t haystack_len;
- const void *needle;
- size_t needle_len;
-{
- const char *begin;
- const char *const last_possible
- = (const char *) haystack + haystack_len - needle_len;
-
- if (needle_len == 0)
- /* The first occurrence of the empty string is deemed to occur at
- the beginning of the string. */
- return (void *) haystack;
-
- /* Sanity check, otherwise the loop might search through the whole
- memory. */
- if (__builtin_expect (haystack_len < needle_len, 0))
- return NULL;
-
- for (begin = (const char *) haystack; begin <= last_possible; ++begin)
- if (begin[0] == ((const char *) needle)[0] &&
- !memcmp ((const void *) &begin[1],
- (const void *) ((const char *) needle + 1),
- needle_len - 1))
- return (void *) begin;
-
- return NULL;
-}
-#endif
-
-void
-skype_got_buddy_icon_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message)
-{
- PurpleBuddy *buddy = user_data;
- PurpleAccount *acct = buddy->account;
-
- if (error_message || !len || !url_text)
- return;
-
- purple_buddy_icons_set_for_user(acct, buddy->name, g_memdup(url_text,len), len, NULL);
-}
-
-void
-skype_update_buddy_icon(PurpleBuddy *buddy)
-{
- PurpleAccount *acct;
- gchar *filename = NULL;
- gchar *new_filename = NULL;
- gchar *image_data = NULL;
- gsize image_data_len = 0;
- gchar *ret;
- int fh;
- GError *error;
- /* -1 unknown, 0 none, 1 skype api, 2 dbb file, 3 url */
- static gint api_supports_avatar =
-#ifndef SKYPENET
-# ifdef _WIN32
- 1;
-# else
-# ifdef __APPLE__
- -1; //OSX only supports GET AVATAR in beta
-# else
- 2;
-# endif
-# endif
-#else
- 3;
-#endif
-
- if (api_supports_avatar == 0)
- {
- return;
- }
-
- skype_debug_info("skype", "Updating buddy icon for %s (%d)\n", buddy->name, api_supports_avatar);
-
- acct = purple_buddy_get_account(buddy);
-
-#ifndef INSTANTBIRD
- if (api_supports_avatar == 1 || api_supports_avatar == -1)
- {
- fh = g_file_open_tmp("skypeXXXXXX", &filename, &error);
- close(fh);
-
- if (filename != NULL)
- {
- new_filename = g_strconcat(filename, ".jpg", NULL);
- g_rename(filename, new_filename);
- ret = skype_send_message("GET USER %s AVATAR 1 %s", buddy->name, new_filename);
- if (strlen(ret) == 0)
- {
- skype_debug_warning("skype", "Error: Protocol doesn't suppot AVATAR\n");
- } else {
- if (g_file_get_contents(new_filename, &image_data, &image_data_len, NULL))
- {
- api_supports_avatar = 1;
- purple_buddy_icons_set_for_user(acct, buddy->name, image_data, image_data_len, NULL);
- }
- }
- g_free(ret);
- g_unlink(new_filename);
- g_free(filename);
- g_free(new_filename);
- } else {
- skype_debug_warning("skype", "Error making temp file %s\n", error->message);
- g_error_free(error);
- }
- }
- if (api_supports_avatar == 2 || api_supports_avatar == -1)
- {
- const gchar *userfiles[] = {"user256", "user1024", "user4096", "user16384", "user32768", "user65536",
- "profile256", "profile1024", "profile4096", "profile16384", "profile32768",
- NULL};
- char *username = g_strdup_printf("\x03\x10%s", buddy->name);
- for (fh = 0; userfiles[fh]; fh++)
- {
-#ifdef _WIN32
- filename = g_strconcat(purple_home_dir(), "\\Skype\\", acct->username, "\\", userfiles[fh], ".dbb", NULL);
-#else
-#ifdef __APPLE__
- filename = g_strconcat(purple_home_dir(), "/Library/Application Support/Skype/", acct->username, "/", userfiles[fh], ".dbb", NULL);
-#else
- filename = g_strconcat(purple_home_dir(), "/.Skype/", acct->username, "/", userfiles[fh], ".dbb", NULL);
-#endif
-#endif
- if (g_file_get_contents(filename, &image_data, &image_data_len, NULL))
- {
- char *start = (char *)memmem(image_data, image_data_len, username, strlen(username)+1);
- api_supports_avatar = 2;
- if (start != NULL)
- {
- char *next = image_data;
- char *last = next;
- //find last index of l33l
- while ((next = (char *)memmem(next+4, start-next-4, "l33l", 4)))
- {
- last = next;
- }
- start = last;
- if (start != NULL)
- {
- char *img_start;
- //find end of l33l block
- char *end = (char *)memmem(start+4, image_data+image_data_len-start-4, "l33l", 4);
- if (!end) end = image_data+image_data_len;
-
- //look for start of JPEG block
- img_start = (char *)memmem(start, end-start, "\xFF\xD8", 2);
- if (img_start)
- {
- //look for end of JPEG block
- char *img_end = (char *)memmem(img_start, end-img_start, "\xFF\xD9", 2);
- if (img_end)
- {
- image_data_len = img_end - img_start + 2;
- purple_buddy_icons_set_for_user(acct, buddy->name, g_memdup(img_start, image_data_len), image_data_len, NULL);
- }
- }
- }
- }
- g_free(image_data);
- }
- g_free(filename);
- }
- g_free(username);
- }
-#else /* ifdef INSTANTBIRD */
- api_supports_avatar = 3;
-#endif
- if (api_supports_avatar == 3 || api_supports_avatar == -1)
- {
- filename = g_strdup_printf("http://api.skype.com/users/%s/profile/avatar", purple_url_encode(buddy->name));
- purple_util_fetch_url(filename, TRUE, NULL, FALSE, skype_got_buddy_icon_cb, buddy);
- g_free(filename);
-
- api_supports_avatar = 3;
- return;
- }
-}
-
-const char *
-skype_list_emblem(PurpleBuddy *buddy)
-{
- PurpleAccount *acct;
- acct = purple_buddy_get_account(buddy);
-
- SkypeBuddy *sbuddy;
- time_t now;
- struct tm *today_tm;
-
- if (buddy->name[0] == '+')
- {
- return "mobile";
- }
- if (buddy && buddy->proto_data)
- {
- sbuddy = buddy->proto_data;
- if (sbuddy->birthday)
- {
- now = time(NULL);
- today_tm = localtime(&now);
- if (sbuddy->birthday->tm_mday == today_tm->tm_mday &&
- sbuddy->birthday->tm_mon == today_tm->tm_mon &&
- sbuddy->birthday->tm_year == today_tm->tm_year)
- {
- return "birthday";
- }
- }
- if (purple_account_get_bool(acct, "video_capable", TRUE) && sbuddy->is_video_capable)
- {
- return "video";
- }
- }
- return NULL;
-}
-
-
-void
-skype_update_buddy_alias(PurpleBuddy *buddy)
-{
- skype_send_message_nowait("GET USER %s DISPLAYNAME", buddy->name);
- skype_send_message_nowait("GET USER %s FULLNAME", buddy->name);
-}
-
-gboolean
-skype_update_buddy_status(PurpleBuddy *buddy)
-{
- PurpleAccount *acct;
-
- if (buddy->name[0] == '+')
- {
- return FALSE;
- }
-
- acct = purple_buddy_get_account(buddy);
- if (purple_account_is_connected(acct) == FALSE)
- {
- return FALSE;
- }
- skype_send_message_nowait("GET USER %s ONLINESTATUS", buddy->name);
- skype_send_message_nowait("GET USER %s MOOD_TEXT", buddy->name);
- skype_send_message_nowait("GET USER %s RICH_MOOD_TEXT", buddy->name);
- skype_send_message_nowait("GET USER %s IS_VIDEO_CAPABLE", buddy->name);
-
- /* if this function was called from another thread, don't loop over it */
- return FALSE;
-}
-
-gboolean
-skype_login_cb(gpointer acct)
-{
- if (!is_skype_running())
- {
- purple_timeout_add_seconds(5, skype_login_cb, acct);
- return FALSE;
- }
- skype_login(acct);
- return FALSE;
-}
-
-static guint retry_count = 0;
-
-void
-skype_login(PurpleAccount *acct)
-{
- PurpleConnection *gc;
- const gchar *skype_path;
- gboolean skype_started = FALSE;
- gchar *errormsg;
- PurpleAccount *test_account;
-
- if (acct == NULL)
- {
- return;
- }
-
- if (purple_get_blist() == NULL)
- {
- return;
- }
-
- //set the account, with misleading function name :)
- skype_get_account(acct);
-
- gc = purple_account_get_connection(acct);
-
- if (gc == NULL)
- return;
-
- gc->flags = PURPLE_CONNECTION_NO_BGCOLOR |
- PURPLE_CONNECTION_NO_URLDESC |
- PURPLE_CONNECTION_NO_FONTSIZE |
- PURPLE_CONNECTION_NO_IMAGES;
-
- /* 1. connect to server */
- // Work out if a skype connection is already running
- //purple_account_is_connected(acct)
- test_account = find_acct(purple_plugin_get_id(this_plugin), NULL);
- if (test_account && test_account != acct)
- {
- errormsg = g_strconcat("\n",_("Only one Skype account allowed"), NULL);
- purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, errormsg);
- g_free(errormsg);
- return;
- }
-
- retry_count = 0;
-
- purple_connection_update_progress(gc, _("Connecting"), 0, 5);
-
- if (!skype_connect())
- {
-#ifndef INSTANTBIRD
- if (purple_account_get_bool(acct, "skype_autostart", TRUE))
- {
- skype_debug_info("skype", "Should I start Skype?\n");
- if (!is_skype_running())
- {
- skype_debug_info("skype", "Yes, start Skype\n");
- if ((skype_path = purple_account_get_string(acct, "skype_path", NULL)) && *skype_path)
- {
- skype_started = g_spawn_command_line_async(skype_path, NULL);
- } else {
- skype_started = exec_skype();
- }
-
- if (skype_started)
- {
- purple_timeout_add_seconds(20, skype_login_cb, acct);
- return;
- }
- return;
- }
- }
-#endif
- purple_timeout_add_seconds(10, (GSourceFunc) skype_login_retry, acct);
- return;
- }
-
- purple_timeout_add(1, (GSourceFunc) skype_login_part2, acct);
-}
-
-gboolean
-skype_login_retry(PurpleAccount *acct)
-{
- gchar *errormsg;
- PurpleConnection *gc;
-
- gc = purple_account_get_connection(acct);
-
- if (retry_count++ == 3)
- {
- errormsg = g_strconcat("\n", _("Could not connect to Skype process.\nSkype not running?"), NULL);
- purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, errormsg);
- g_free(errormsg);
-
- return FALSE;
- }
-
- if (!skype_connect())
- return TRUE;
-
- purple_timeout_add(1, (GSourceFunc) skype_login_part2, acct);
- return FALSE;
-}
-
-gboolean
-skype_login_part2(PurpleAccount *acct)
-{
- gchar *reply;
- PurpleConnection *gc;
- static guint missedmessagestimout = 0;
-
- gc = purple_account_get_connection(acct);
-
- purple_connection_update_progress(gc, _("Authorizing"),
- 1, /* which connection step this is */
- 5); /* total number of steps */
-
-
-
-#if SKYPENET || ! __APPLE__
-#ifdef __APPLE__
- reply = skype_send_message("NAME Adium");
-#else
- reply = skype_send_message("NAME %s", g_get_application_name());
-#endif
- if (reply == NULL || strlen(reply) == 0)
- {
- purple_timeout_add_seconds(10, (GSourceFunc) skype_login_retry, acct);
- return FALSE;
- }
- if (g_str_equal(reply, "CONNSTATUS OFFLINE"))
- {
- //this happens if we connect before skype has connected to the network
- purple_timeout_add_seconds(1, skype_login_cb, acct);
- g_free(reply);
- return FALSE;
- }
- g_free(reply);
-#endif
- purple_connection_update_progress(gc, _("Initializing"), 2, 5);
- reply = skype_send_message("PROTOCOL 7");
- if (reply == NULL || strlen(reply) == 0)
- {
- purple_timeout_add_seconds(10, (GSourceFunc) skype_login_retry, acct);
- return FALSE;
- }
- sscanf(reply, "PROTOCOL %d", &protocol_version);
- g_free(reply);
-
- purple_connection_update_progress(gc, _("Hide Skype"), 3, 5);
- skype_silence(NULL, NULL);
- purple_connection_update_progress(gc, _("Connected"), 4, 5);
-
- skype_get_account_alias(acct);
- skype_get_account_username(acct);
- if (purple_account_get_bool(acct, "skype_sync", TRUE))
- skype_set_status(acct, purple_account_get_active_status(acct));
- skype_send_message_nowait("CREATE APPLICATION libpurple_typing");
-
- purple_connection_set_state(gc, PURPLE_CONNECTED);
-
- //sync buddies after everything else has finished loading
- purple_timeout_add_seconds(1, (GSourceFunc)skype_set_buddies, (gpointer)acct);
-
- if (TRUE)
- {
- gint version_int = 0;
- gchar *version = skype_send_message("GET SKYPEVERSION");
- sscanf(version, "%*s %d", &version_int);
- skype_debug_info("skype", "version [%s] - %d\n", version, version_int);
- g_free(version);
-
- if (version_int >= 5 && !missedmessagestimout) {
- missedmessagestimout = purple_timeout_add_seconds(10, (GSourceFunc)skype_check_missedmessages, (gpointer)acct);
- skype_debug_info("skype", "installing skype_check_missedmessages\n");
- } else if (version_int < 5 && missedmessagestimout) {
- purple_timeout_remove(missedmessagestimout);
- missedmessagestimout = 0;
- skype_debug_info("skype", "removing skype_check_missedmessages\n");
- }
- }
-
- return FALSE;
-}
-
-const char *
-skype_get_account_username(PurpleAccount *acct)
-{
-#ifdef SKYPENET
- if (acct == NULL)
- return NULL;
- return acct->username;
-#else
- char *ret;
- static char *username = NULL;
-
- if (username != NULL)
- return username;
-
- if (!acct)
- return "Skype";
-
- ret = skype_send_message("GET CURRENTUSERHANDLE");
- if (!ret || !strlen(ret))
- {
- g_free(ret);
- return NULL;
- }
- username = g_strdup(&ret[18]);
- g_free(ret);
-
- if (acct && !g_str_equal(acct->username, username))
- {
- skype_debug_info("skype", "Setting username to %s\n", username);
- purple_account_set_username(acct, username);
- }
- return username;
-#endif
-}
-
-void
-skype_get_account_alias(PurpleAccount *acct)
-{
- char *ret;
- char *alias;
-
- alias = (gchar *)purple_account_get_alias(acct);
- if (alias != NULL && alias[0] != '\0')
- {
- //Alias already set, dont do anything
- return;
- }
-
- ret = skype_send_message("GET PROFILE FULLNAME");
- alias = g_strdup(&ret[17]);
- g_free(ret);
- purple_account_set_alias(acct, alias);
- g_free(alias);
-}
-
-void
-skype_close(PurpleConnection *gc)
-{
- GSList *buddies, *buddieslist;
-
- skype_debug_info("skype", "logging out\n");
-
- //Close notification boxes (if any)
- purple_request_close_with_handle(gc);
-
- if (gc && purple_account_get_bool(gc->account, "skype_sync", TRUE))
- skype_send_message_nowait("SET USERSTATUS OFFLINE");
- skype_send_message_nowait("SET SILENT_MODE OFF");
- skype_debug_info("skype", "disconnecting...\n");
- skype_disconnect();
- if (gc)
- {
- buddieslist = purple_find_buddies(gc->account, NULL);
- //make all buddies offline
- for(buddies = buddieslist;
- buddies != NULL;
- buddies = buddies->next)
- {
- PurpleBuddy *buddy = buddies->data;
- purple_prpl_got_user_status(buddy->account, buddy->name, "OFFLINE", NULL);
- }
- g_slist_free(buddieslist);
- }
-
-
- g_hash_table_destroy(messages_table);
- messages_table = NULL;
- g_hash_table_destroy(groups_table);
- groups_table = NULL;
- g_hash_table_destroy(chat_link_table);
- chat_link_table = NULL;
- g_hash_table_destroy(sms_convo_link_table);
- sms_convo_link_table = NULL;
-
-#ifndef INSTANTBIRD
- g_hash_table_destroy(call_media_hash);
- call_media_hash = NULL;
-#endif
-}
-
-int
-skype_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
- PurpleMessageFlags flags)
-{
- char *stripped;
- char *chat_id;
- PurpleConversation *conv;
-
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, purple_connection_get_account(gc));
-
- if (who[0] == '+' && conv && purple_conversation_get_data(conv, "sms_msg"))
- {
- return skype_send_sms(gc, who, message, flags);
- }
-
- stripped = purple_markup_strip_html(message);
-
- if (protocol_version < 5 || conv == NULL || purple_conversation_get_data(conv, "chat_id") == NULL)
- {
- skype_send_message_nowait("MESSAGE %s %s", who, stripped);
- } else {
- chat_id = purple_conversation_get_data(conv, "chat_id");
- skype_send_message_nowait("CHATMESSAGE %s %s", chat_id, stripped);
- }
-
-
-#ifdef USE_SKYPE_SENT
- return 0;
-#else
- return 1;
-#endif
-}
-
-
-unsigned int
-skype_send_typing(PurpleConnection *gc, const gchar *name, PurpleTypingState state)
-{
- gchar *string_state = NULL, *temp = NULL;
- PurpleAccount *account;
- account = purple_connection_get_account(gc);
-
- //Don't send typing messages to SkypeOut
- if (name[0] == '+')
- return 0;
-
- switch(state)
- {
- case PURPLE_NOT_TYPING:
- string_state = "PURPLE_NOT_TYPING";
- break;
- case PURPLE_TYPING:
- string_state = "PURPLE_TYPING";
- break;
- case PURPLE_TYPED:
- string_state = "PURPLE_TYPED";
- break;
- default:
- string_state = "";
- break;
- }
-
- temp = g_strconcat("stream-", name, NULL);
-
- if (purple_account_get_string(account, temp, NULL))
- {
- skype_send_message_nowait( "ALTER APPLICATION libpurple_typing DATAGRAM %s:%s %s", name,
- purple_account_get_string(account, temp, "1"), string_state);
- } else {
- //lets be dumb and try to connect without getting a stream
- skype_send_message_nowait("CREATE APPLICATION libpurple_typing");
- skype_send_message_nowait( "ALTER APPLICATION libpurple_typing CONNECT %s", name);
- }
-
- g_free(temp);
-
- return 4;
-}
-
-gchar *
-timestamp_to_datetime(time_t timestamp)
-{
- return g_strdup(purple_date_format_long(localtime(&timestamp)));
-}
-
-void
-set_skype_buddy_attribute(SkypeBuddy *sbuddy, const gchar *skype_buddy_property, const gchar *value)
-{
- if (sbuddy == NULL)
- return;
- if (skype_buddy_property == NULL)
- return;
-
- if (g_str_equal(skype_buddy_property, "FULLNAME"))
- {
- g_free(sbuddy->fullname);
- sbuddy->fullname = NULL;
- if (value && strlen(value))
- sbuddy->fullname = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "MOOD_TEXT"))
- {
- g_free(sbuddy->mood);
- sbuddy->mood = NULL;
- if (value)
- {
- sbuddy->mood = g_strdup(value);
- purple_util_chrreplace(sbuddy->mood, '\n', ' ');
- }
- } else if (g_str_equal(skype_buddy_property, "BIRTHDAY"))
- {
- g_free(sbuddy->birthday);
- sbuddy->birthday = NULL;
- if (value && strlen(value) && !g_str_equal(value, "0"))
- {
- sbuddy->birthday = g_new(struct tm, 1);
- purple_str_to_time(value, FALSE, sbuddy->birthday, NULL, NULL);
- }
- } else if (g_str_equal(skype_buddy_property, "SEX"))
- {
- g_free(sbuddy->gender);
- sbuddy->gender = NULL;
- if (value && *value && !g_str_equal(value, "UNKNOWN"))
- sbuddy->gender = g_ascii_strdown(value, -1);
- } else if (g_str_equal(skype_buddy_property, "LANGUAGE"))
- {
- g_free(sbuddy->language);
- sbuddy->language = NULL;
- if (value && strlen(value))
- sbuddy->language = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "COUNTRY"))
- {
- g_free(sbuddy->country);
- sbuddy->country = NULL;
- if (value && strlen(value))
- sbuddy->country = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "IS_VIDEO_CAPABLE"))
- {
- if (value && strlen(value) && g_str_equal(value, "TRUE"))
- sbuddy->is_video_capable = TRUE;
- else
- sbuddy->is_video_capable = FALSE;
- } else if (g_str_equal(skype_buddy_property, "ISAUTHORIZED"))
- {
- if (value && strlen(value) && g_str_equal(value, "TRUE"))
- sbuddy->is_authorized = TRUE;
- else
- sbuddy->is_authorized = FALSE;
- } else if (g_str_equal(skype_buddy_property, "ISBLOCKED"))
- {
- if (value && strlen(value) && g_str_equal(value, "TRUE"))
- sbuddy->is_blocked = TRUE;
- else
- sbuddy->is_blocked = FALSE;
- } else if (g_str_equal(skype_buddy_property, "LASTONLINETIMESTAMP"))
- {
- sbuddy->last_online = 0;
- if (value)
- sbuddy->last_online = (time_t) atoi(value);
- } else if (g_str_equal(skype_buddy_property, "TIMEZONE"))
- {
- sbuddy->timezone_offset = 0;
- if (value)
- sbuddy->timezone_offset = (g_ascii_strtod(value, NULL) / 3600) - 24;
- } else if (g_str_equal(skype_buddy_property, "NROF_AUTHED_BUDDIES"))
- {
- sbuddy->number_of_buddies = 0;
- if (value)
- sbuddy->number_of_buddies = g_ascii_strtoull(value, NULL, 10);
- } else if (g_str_equal(skype_buddy_property, "ABOUT"))
- {
- g_free(sbuddy->about);
- sbuddy->about = NULL;
- if (value && strlen(value))
- {
- sbuddy->about = g_strdup(value);
- }
- } else if (g_str_equal(skype_buddy_property, "PROVINCE"))
- {
- g_free(sbuddy->province);
- sbuddy->province = NULL;
- if (value && strlen(value))
- {
- sbuddy->province = g_strdup(value);
- }
- } else if (g_str_equal(skype_buddy_property, "CITY"))
- {
- g_free(sbuddy->city);
- sbuddy->city = NULL;
- if (value && strlen(value))
- sbuddy->city = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "PHONE_HOME"))
- {
- g_free(sbuddy->phone_home);
- sbuddy->phone_home = NULL;
- if (value && strlen(value) && !g_str_equal(value, "N/A"))
- sbuddy->phone_home = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "PHONE_OFFICE"))
- {
- g_free(sbuddy->phone_office);
- sbuddy->phone_office = NULL;
- if (value && strlen(value) && !g_str_equal(value, "N/A"))
- sbuddy->phone_office = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "PHONE_MOBILE"))
- {
- g_free(sbuddy->phone_mobile);
- sbuddy->phone_mobile = NULL;
- if (value && strlen(value) && !g_str_equal(value, "N/A"))
- sbuddy->phone_mobile = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "HOMEPAGE"))
- {
- g_free(sbuddy->homepage);
- sbuddy->homepage = NULL;
- if (value && strlen(value))
- sbuddy->homepage = g_strdup(value);
- } else if (g_str_equal(skype_buddy_property, "HASCALLEQUIPMENT"))
- {
- if (value && strlen(value) && g_str_equal(value, "TRUE"))
- sbuddy->has_call_equipment = TRUE;
- else
- sbuddy->has_call_equipment = FALSE;
- } else if (g_str_equal(skype_buddy_property, "IS_VOICEMAIL_CAPABLE"))
- {
- if (value && strlen(value) && g_str_equal(value, "TRUE"))
- sbuddy->is_voicemail_capable = TRUE;
- else
- sbuddy->is_voicemail_capable = FALSE;
- } else if (g_str_equal(skype_buddy_property, "CAN_LEAVE_VM"))
- {
- if (value && strlen(value) && g_str_equal(value, "TRUE"))
- sbuddy->can_leave_voicemail = TRUE;
- else
- sbuddy->can_leave_voicemail = FALSE;
- }
-}
-
-SkypeBuddy *
-skype_buddy_new(PurpleBuddy *buddy)
-{
- SkypeBuddy *newbuddy = g_new0(SkypeBuddy, 1);
- newbuddy->buddy = buddy;
- buddy->proto_data = newbuddy;
-
- //this bit used in Get Info
- newbuddy->handle = g_strdup(buddy->name);
-
- skype_send_message_nowait("GET USER %s FULLNAME", buddy->name);
- if (buddy->name[0] != '+')
- {
- skype_send_message_nowait("GET USER %s ONLINESTATUS", buddy->name);
- skype_send_message_nowait("GET USER %s IS_VIDEO_CAPABLE", buddy->name);
- }
- return newbuddy;
-}
-
-void
-skype_buddy_free(PurpleBuddy *buddy)
-{
- SkypeBuddy *sbuddy;
- gchar *temp;
-
- g_return_if_fail(buddy != NULL);
-
- if (buddy->proto_data)
- {
- sbuddy = buddy->proto_data;
- buddy->proto_data = NULL;
-
- g_free(sbuddy->handle);
- g_free(sbuddy->fullname);
- g_free(sbuddy->mood);
- g_free(sbuddy->birthday);
- g_free(sbuddy->gender);
- g_free(sbuddy->language);
- g_free(sbuddy->country);
- g_free(sbuddy->about);
- g_free(sbuddy->province);
- g_free(sbuddy->city);
- g_free(sbuddy->phone_home);
- g_free(sbuddy->phone_office);
- g_free(sbuddy->phone_mobile);
- g_free(sbuddy->homepage);
-
- g_free(sbuddy);
- }
-
- if (buddy->name && buddy->account)
- {
- temp = g_strdup_printf("stream-%s", buddy->name);
- if (purple_account_get_string(buddy->account, temp, NULL))
- purple_account_set_string(buddy->account, temp, NULL);
- g_free(temp);
- }
-}
-
-gboolean
-skype_display_buddy_info(PurpleBuddy *buddy)
-{
- PurpleNotifyUserInfo *user_info;
- SkypeBuddy *sbuddy;
- gchar *timezone = NULL;
- gchar *buddy_count = NULL;
- gchar *lastonline = NULL;
-
- if (buddy && buddy->proto_data)
- {
-#define _SKYPE_USER_INFO(prop, key) if (prop) \
- purple_notify_user_info_add_pair(user_info, _(key), (prop));
- sbuddy = buddy->proto_data;
- user_info = purple_notify_user_info_new();
-
- _SKYPE_USER_INFO(sbuddy->handle, "Skype Name");
- _SKYPE_USER_INFO(sbuddy->fullname, "Full Name");
- if (strlen(sbuddy->mood) != 0)
- _SKYPE_USER_INFO(sbuddy->mood, "Mood Text");
- purple_notify_user_info_add_section_break(user_info);
- if (sbuddy->birthday != 0)
- _SKYPE_USER_INFO(purple_date_format_short(sbuddy->birthday),"Birthday");
- _SKYPE_USER_INFO(sbuddy->gender, "Gender");
- _SKYPE_USER_INFO(sbuddy->language, "Preferred Language");
- _SKYPE_USER_INFO(sbuddy->country, "Country");
- if (sbuddy->timezone_offset)
- {
- timezone = g_strdup_printf("UMT %+.1f", sbuddy->timezone_offset);
- _SKYPE_USER_INFO(timezone, "Timezone");
- }
- _SKYPE_USER_INFO(sbuddy->province, "Province");
- _SKYPE_USER_INFO(sbuddy->city, "City");
- _SKYPE_USER_INFO(sbuddy->phone_mobile, "Phone Mobile");
- _SKYPE_USER_INFO(sbuddy->phone_office, "Phone Office");
- _SKYPE_USER_INFO(sbuddy->phone_home, "Phone Home");
- _SKYPE_USER_INFO(sbuddy->homepage, "Homepage");
-
- purple_notify_user_info_add_section_break(user_info);
-
- _SKYPE_USER_INFO(sbuddy->is_video_capable?_("Yes"):_("No"), "Video Capable");
- _SKYPE_USER_INFO(sbuddy->has_call_equipment?_("Yes"):_("No"), "Call Equipment");
- _SKYPE_USER_INFO(sbuddy->is_voicemail_capable?_("Yes"):_("No"), "VoiceMail Capable");
- _SKYPE_USER_INFO(sbuddy->can_leave_voicemail?_("Yes"):_("No"), "Can Leave VoiceMail");
- _SKYPE_USER_INFO(sbuddy->is_authorized?_("Yes"):_("No"), "Authorization Granted");
- _SKYPE_USER_INFO(sbuddy->is_blocked?_("Yes"):_("No"), "Blocked");
-
- buddy_count = g_strdup_printf("%d", sbuddy->number_of_buddies);
- _SKYPE_USER_INFO(buddy_count, "Number of buddies");
-
- lastonline = timestamp_to_datetime(sbuddy->last_online);
- _SKYPE_USER_INFO(lastonline, "Last online");
-
- purple_notify_user_info_add_section_break(user_info);
- _SKYPE_USER_INFO(sbuddy->about, "About");
-
- purple_notify_userinfo(purple_account_get_connection(buddy->account),
- buddy->name, user_info,
- (PurpleNotifyCloseCallback)purple_notify_user_info_destroy, user_info);
-
- g_free(timezone);
- g_free(buddy_count);
- g_free(lastonline);
- }
- return FALSE;
-}
-
-void
-skype_get_info(PurpleConnection *gc, const gchar *username)
-{
- PurpleBuddy *buddy;
- buddy = purple_find_buddy(gc->account, username);
- if (buddy)
- {
- skype_get_all_buddy_info(buddy);
- purple_timeout_add_seconds(2, (GSourceFunc)skype_display_buddy_info, buddy);
- }
-}
-
-gchar *
-skype_get_user_info(const gchar *username, const gchar *property)
-{
- gchar *outstr;
- gchar *return_str;
- outstr = skype_send_message("GET USER %s %s", username, property);
- if (strlen(outstr) == 0)
- return outstr;
- return_str = g_strdup(&outstr[7+strlen(username)+strlen(property)]);
- g_free(outstr);
- /* skype_debug_info("skype", "User %s's %s is %s", username, property, return_str); */
- if (return_str == NULL)
- return NULL;
- return return_str;
-}
-
-void
-skype_set_status(PurpleAccount *account, PurpleStatus *status)
-{
- PurpleStatusType *type;
- const char *message;
-
- type = purple_status_get_type(status);
- skype_send_message_nowait("SET USERSTATUS %s", purple_status_type_get_id(type));
-
- message = purple_status_get_attr_string(status, "message");
- if (message == NULL)
- message = "";
- else
- message = purple_markup_strip_html(message);
- if (purple_account_get_bool(account, "update_status", TRUE))
- skype_send_message_nowait("SET PROFILE MOOD_TEXT %s", message);
-}
-
-void
-skype_set_idle(PurpleConnection *gc, int time)
-{
- skype_send_message_nowait("SET AUTOAWAY OFF");
- skype_send_message_nowait("RESETIDLETIMER");
-}
-
-
-void
-skype_put_buddies_in_groups()
-{
- skype_send_message_nowait("SEARCH GROUPS CUSTOM");
-}
-
-gboolean
-groups_table_find_group(gpointer key, gpointer value, gpointer user_data)
-{
- gchar *group_name = user_data;
- gint group_number = GPOINTER_TO_INT(key);
- PurpleGroup *group = value;
- if (g_str_equal(group_name, group->name))
- {
- purple_blist_node_set_int(&group->node, "skype_group_number", group_number);
- return TRUE;
- }
- return FALSE;
-}
-
-int
-skype_find_group_with_name(const char *group_name_in)
-{
- PurpleGroup *purple_group;
- gint group_number;
-
- purple_group = purple_find_group(group_name_in);
- if (purple_group != NULL)
- {
- group_number = purple_blist_node_get_int(&purple_group->node, "skype_group_number");
- if (group_number)
- return group_number;
- }
-
- if (groups_table == NULL)
- {
- skype_send_message_nowait("SEARCH GROUPS CUSTOM");
- return -1;
- }
-
- purple_group = g_hash_table_find(groups_table, groups_table_find_group, (gpointer)group_name_in);
- if (purple_group == NULL)
- {
- return 0;
- }
- return purple_blist_node_get_int(&purple_group->node, "skype_group_number");
-}
-
-//use this to try and regroup a buddy after a few seconds
-struct _cheat_skype_group_buddy_struct {
- PurpleConnection *gc;
- gchar *who;
- gchar *old_group;
- gchar *new_group;
-};
-
-gboolean skype_group_buddy_timeout(struct _cheat_skype_group_buddy_struct *cheat);
-
-gboolean
-skype_group_buddy_timeout(struct _cheat_skype_group_buddy_struct *cheat)
-{
- if (!cheat)
- return FALSE;
-
- skype_group_buddy(cheat->gc, cheat->who, cheat->old_group, cheat->new_group);
- g_free(cheat->who);
- g_free(cheat->old_group);
- g_free(cheat->new_group);
- g_free(cheat);
- return FALSE;
-}
-
-void
-skype_group_buddy(PurpleConnection *gc, const char *who, const char *old_group, const char *new_group)
-{
- int group_number = 0;
-
- //add to new group
- group_number = skype_find_group_with_name(new_group);
- if (group_number <= 0)
- {
- struct _cheat_skype_group_buddy_struct *cheat;
- if (group_number == 0)
- skype_send_message_nowait("CREATE GROUP %s", new_group);
-
- cheat = g_new(struct _cheat_skype_group_buddy_struct, 1);
- cheat->gc = gc;
- cheat->who = g_strdup(who);
- cheat->old_group = old_group?g_strdup(old_group):NULL;
- cheat->new_group = new_group?g_strdup(new_group):NULL;
- purple_timeout_add_seconds(5, (GSourceFunc)skype_group_buddy_timeout, cheat);
- return;
- }
-
- skype_send_message_nowait("ALTER GROUP %d ADDUSER %s", group_number, who);
-
- if (old_group == NULL)
- return;
-
- //remove from old group
- group_number = skype_find_group_with_name(old_group);
- if (!group_number)
- return;
- skype_send_message_nowait("ALTER GROUP %d REMOVEUSER %s", group_number, who);
-}
-
-void
-skype_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup *group, GList *moved_buddies)
-{
- int group_number = 0;
-
- group_number = skype_find_group_with_name(old_name);
- if (group_number <= 0)
- {
- //TODO Safely rename group back to the old group name to indicate failure
- return;
- }
- skype_send_message_nowait("SET GROUP %d DISPLAYNAME %s", group_number, group->name);
-}
-
-void skype_remove_group(PurpleConnection *gc, PurpleGroup *group)
-{
- int group_number = 0;
-
- group_number = skype_find_group_with_name(group->name);
- if (group_number <= 0)
- return;
- skype_send_message_nowait("DELETE GROUP %d", group_number);
-}
-
-void
-skype_add_buddy_with_invite(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
-{
- skype_send_message_nowait("SET USER %s BUDDYSTATUS 2 %s", buddy->name, message);
-
- if (buddy->alias == NULL || strlen(buddy->alias) == 0)
- skype_update_buddy_alias(buddy);
- else
- skype_alias_buddy(gc, buddy->name, buddy->alias);
- if (group && group->name)
- {
- skype_group_buddy(gc, buddy->name, NULL, group->name);
- }
- skype_add_permit(gc, buddy->name);
- skype_rem_deny(gc, buddy->name);
-
- skype_update_buddy_status(buddy);
-}
-
-void
-skype_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
-{
- skype_add_buddy_with_invite(gc, buddy, group, _("Please authorize me so I can add you to my buddy list."));
-}
-
-void
-skype_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
-{
- // Check that the buddy doesn't exist in other groups (ie, is the UI being weird)
- GSList *buddies, *current;
- PurpleBuddy *otherbuddy;
- PurpleGroup *othergroup;
- int group_number;
-
- buddies = purple_find_buddies(buddy->account, buddy->name);
- if (buddies == NULL)
- return;
-
- for(current = buddies; current; current = g_slist_next(current))
- {
- otherbuddy = current->data;
- if (otherbuddy == NULL)
- continue;
- othergroup = purple_buddy_get_group(otherbuddy);
- if (othergroup == NULL)
- continue;
- if (!g_str_equal(othergroup->name, group->name))
- {
- //If we're here, we've found the buddy in another group, just remove them from this group for now
- group_number = skype_find_group_with_name(group->name);
- if (group_number)
- skype_send_message_nowait("ALTER GROUP %d REMOVEUSER %s", group_number, buddy->name);
- g_slist_free(buddies);
- return;
- }
- }
- g_slist_free(buddies);
-
- //If we're here, the buddy was only in that one group, so remove them completely
- skype_send_message_nowait("SET USER %s BUDDYSTATUS 1", buddy->name);
-}
-
-void
-skype_add_deny(PurpleConnection *gc, const char *who)
-{
- skype_send_message_nowait("SET USER %s ISBLOCKED TRUE", who);
-}
-
-void
-skype_rem_deny(PurpleConnection *gc, const char *who)
-{
- skype_send_message_nowait("SET USER %s ISBLOCKED FALSE", who);
- skype_send_message_nowait("SET USER %s BUDDYSTATUS 2", who);
-}
-
-void
-skype_add_permit(PurpleConnection *gc, const char *who)
-{
- skype_send_message_nowait("SET USER %s ISAUTHORIZED TRUE", who);
-}
-
-void
-skype_rem_permit(PurpleConnection *gc, const char *who)
-{
- skype_send_message_nowait("SET USER %s ISAUTHORIZED FALSE", who);
-}
-
-static time_t last_ping = 0;
-
-gboolean
-skype_check_keepalive(PurpleConnection *gc)
-{
- if (last_pong < last_ping)
- purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("\nSkype not responding"));
- return FALSE;
-}
-
-void
-skype_keepalive(PurpleConnection *gc)
-{
- last_ping = time(NULL);
- skype_send_message_nowait("PING");
- purple_timeout_add_seconds(20, (GSourceFunc)skype_check_keepalive, gc);
-}
-
-void
-skype_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img)
-{
- gchar *path;
- if (img != NULL)
- {
- path = g_build_filename(purple_buddy_icons_get_cache_dir(), purple_imgstore_get_filename(img), NULL);
- skype_send_message_nowait("SET AVATAR 1 %s:1", path);
- g_free(path);
- }
- else
- skype_send_message_nowait("SET AVATAR 1");
-}
-
-char *
-skype_status_text(PurpleBuddy *buddy)
-{
- char *mood_text;
- PurplePresence *presence;
- PurpleStatus *status;
- PurpleStatusType *type;
- SkypeBuddy *sbuddy = buddy->proto_data;
-
- if (sbuddy && sbuddy->mood != NULL && strlen(sbuddy->mood))
- return skype_strdup_withhtml(sbuddy->mood);
-
- if (sbuddy == NULL || sbuddy->mood == NULL)
- {
- if (buddy->name[0] != '+')
- skype_send_message_nowait("GET USER %s MOOD_TEXT", buddy->name);
- return NULL;
- }
-
- //If we're at this point, they don't have a mood.
- //Use away status instead
- presence = purple_buddy_get_presence(buddy);
- if (presence == NULL)
- return NULL;
- status = purple_presence_get_active_status(presence);
- if (status == NULL)
- return NULL;
- type = purple_status_get_type(status);
- if (type == NULL || g_str_equal(purple_status_type_get_id(type), "ONLINE") ||
- purple_status_type_get_primitive(type) == PURPLE_STATUS_OFFLINE)
- return NULL;
- mood_text = (char *)purple_status_type_get_name(type);
- if (mood_text != NULL && strlen(mood_text))
- return skype_strdup_withhtml(mood_text);
-
- return NULL;
-}
-
-void
-skype_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *userinfo, gboolean full)
-{
- PurplePresence *presence;
- PurpleStatus *status;
- SkypeBuddy *sbuddy = buddy->proto_data;
-
- presence = purple_buddy_get_presence(buddy);
- status = purple_presence_get_active_status(presence);
- purple_notify_user_info_add_pair(userinfo, _("Status"), purple_status_get_name(status));
- if (sbuddy && sbuddy->mood && strlen(sbuddy->mood))
- purple_notify_user_info_add_pair(userinfo, _("Message"), sbuddy->mood);
-}
-
-const char *
-skype_list_icon(PurpleAccount *account, PurpleBuddy *buddy)
-{
- //when pidgin requests the icon for a skypeout buddy, it also requests the icon
- //for the account, which overwrites the buddy's skypeout icon, so cheat
- //and store it :)
- static gboolean last_icon_was_skypeout = FALSE;
-
- if (last_icon_was_skypeout)
- {
- last_icon_was_skypeout = FALSE;
- return "skypeout";
- }
-
- if (buddy && buddy->name[0] == '+')
- {
- last_icon_was_skypeout = TRUE;
- return "skypeout";
- }
- return "skype";
-}
-
-int
-skype_send_raw(PurpleConnection *gc, const char *buf, int len)
-{
- gchar *newbuf = NULL;
- int newlen = 0;
-
- newbuf = g_strndup(buf, len);
- newlen = strlen(newbuf);
- if (newbuf != NULL)
- {
- skype_send_message_nowait(newbuf);
- g_free(newbuf);
- }
-
- return newlen;
-}
-
-static gboolean
-skype_check_missedmessages(PurpleAccount *account)
-{
- skype_send_message_nowait("SEARCH MISSEDCHATMESSAGES");
-
- //return FALSE; //dont keep looking for missed messages
- return TRUE; //keep looking for missed messages
-}
-
-static gboolean
-skype_check_missedvoicemails(PurpleAccount *account)
-{
- int i;
- gchar **messages;
- gchar *message;
- gchar *messages_start;
- //gchar *subject, *from, *to, *url;
- gchar *temp;
-
- message = skype_send_message("SEARCH MISSEDVOICEMAILS");
- if (!message || *message == '\0')
- return FALSE; //there was an error
- messages_start = strchr(message, ' ');
- if (messages_start != NULL)
- {
- messages = g_strsplit(messages_start + 1, ", ", 0);
- for (i = 0; messages[i]; i++)
- {
- temp = skype_send_message("GET VOICEMAIL %s PARTNER_DISPNAME", messages[i]);
- g_free(temp);
-
- temp = skype_send_message("GET VOICEMAIL %s PARTNER_HANDLE", messages[i]);
- g_free(temp);
-
- //url = g_strdup_printf("skype:%s?voicemailplay", messages[i]);
- //ALTER VOICEMAIL %s STARTPLAYBACK
-
- //purple_notify_email(purple_account_get_connection(account),
- // subject, from, to, url, NULL, NULL);
- }
- g_strfreev(messages);
- }
- g_free(message);
-
- return FALSE;
-}
-
-static void
-skype_initiate_chat(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
- //PurpleGroup *group;
- PurpleConversation *conv;
- gchar *msg;
- gchar chat_id[200];
- static int chat_number = 1000;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- buddy = (PurpleBuddy *) node;
- msg = skype_send_message("CHAT CREATE");
- printf("Chat create response: '%s'\n", msg);
- sscanf(msg, "CHAT %s ", chat_id);
- g_free(msg);
-
- conv = serv_got_joined_chat(purple_account_get_connection(purple_buddy_get_account(buddy)), chat_number, chat_id);
- skype_send_message_nowait("ALTER CHAT %s ADDMEMBERS %s", chat_id, buddy->name);
- skype_debug_info("skype", "Conv Hash Table: %d\n", conv->data);
- skype_debug_info("skype", "chat_id: %s\n", chat_id);
- purple_conversation_set_data(conv, "chat_id", g_strdup(chat_id));
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(conv),
- skype_get_account_username(buddy->account), NULL, PURPLE_CBFLAGS_NONE, FALSE);
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(conv),
- buddy->name, NULL, PURPLE_CBFLAGS_NONE, FALSE);
- purple_conv_chat_set_id(PURPLE_CONV_CHAT(conv), chat_number++);
- } else if (PURPLE_BLIST_NODE_IS_GROUP(node))
- {
-/* group = (PurpleGroup *) node;
- msg = skype_send_message("CHAT CREATE");
- sscanf(msg, "CHAT %s ", chat_id);
- g_free(msg);
-
- conv = serv_got_joined_chat(purple_account_get_connection(purple_buddy_get_account(buddy)), chat_number, chat_id);
- purple_conversation_set_data(conv, "chat_id", g_strdup(chat_id));
- purple_conv_chat_set_id(PURPLE_CONV_CHAT(conv), chat_number++);
-
- //loop through all the child nodes of the group
-
- //add buddy to the chat
-
- //add self to the chat
-*/ }
-}
-
-static void
-skype_chat_invite(PurpleConnection *gc, int id, const char *msg, const char *who)
-{
- PurpleConversation *conv;
- gchar *chat_id;
-
- conv = purple_find_chat(gc, id);
- chat_id = (gchar *)g_hash_table_lookup(conv->data, "chat_id");
-
- skype_send_message_nowait("ALTER CHAT %s ADDMEMBERS %s", chat_id, who);
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(conv), who, NULL, PURPLE_CBFLAGS_NONE, TRUE);
-}
-
-static void
-skype_chat_leave(PurpleConnection *gc, int id)
-{
- PurpleConversation *conv;
- gchar* chat_id;
-
- conv = purple_find_chat(gc, id);
- chat_id = (gchar *)g_hash_table_lookup(conv->data, "chat_id");
-
- skype_send_message_nowait("ALTER CHAT %s LEAVE", chat_id);
-
- //once you leave a chat, you can't go back
- //TODO delete chat from buddy-list, if it's not a public chat
-}
-
-static int
-skype_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags)
-{
-
- PurpleConversation *conv;
- gchar* chat_id;
- char *stripped;
-
- stripped = purple_markup_strip_html(message);
- conv = purple_find_chat(gc, id);
- skype_debug_info("skype", "chat_send; conv: %d, conv->data: %d, id: %d\n", conv, conv->data, id);
- chat_id = (gchar *)g_hash_table_lookup(conv->data, "chat_id");
- skype_debug_info("skype", "chat_id: %s\n", chat_id);
-
- skype_send_message_nowait("CHATMESSAGE %s %s", chat_id, stripped);
-
- serv_got_chat_in(gc, id, purple_account_get_username(purple_connection_get_account(gc)), PURPLE_MESSAGE_SEND,
- message, time(NULL));
-
- return 1;
-}
-
-static void
-skype_set_chat_topic(PurpleConnection *gc, int id, const char *topic)
-{
- PurpleConversation *conv;
- gchar* chat_id;
-
- conv = purple_find_chat(gc, id);
- chat_id = (gchar *)g_hash_table_lookup(conv->data, "chat_id");
-
- skype_send_message_nowait("ALTER CHAT %s SETTOPIC %s", chat_id, topic);
-
- //serv_got_chat_in(gc, id, purple_account_get_username(purple_connection_get_account(gc)), PURPLE_MESSAGE_SYSTEM,
- // skype_strdup_withhtml(g_strdup_printf(_("%s has changed the topic to: %s"), purple_account_get_username(purple_connection_get_account(gc)), topic)), time(NULL));
- //purple_conv_chat_set_topic(PURPLE_CONV_CHAT(conv), NULL, topic);
-}
-
-/*PurpleChat *
-skype_find_blist_chat(PurpleAccount *account, const char *name)
-{
- GList *glist_temp = NULL;
- PurpleConversation *conv = NULL;
- PurpleChat *chat = NULL;
-
- glist_temp = g_list_find_custom(purple_get_conversations(), name, (GCompareFunc)skype_find_chat);
- if (glist_temp && glist_temp->data)
- {
- conv = glist_temp->data;
- chat = PURPLE_CONV_CHAT(conv);
- }
-
- return chat;
-}*/
-
-void
-skype_join_chat(PurpleConnection *gc, GHashTable *data)
-{
- SkypeChat *chat;
- PurpleConvChat *convchat;
- gchar *password;
-
- gchar *chat_id = (gchar *)g_hash_table_lookup(data, "chat_id");
- if (chat_id == NULL)
- {
- return;
- }
- chat = skype_find_chat(chat_id, gc->account);
- skype_send_message_nowait("ALTER CHAT %s JOIN", chat_id);
-
- password = (gchar *)g_hash_table_lookup(data, "password");
- if (password != NULL)
- {
- skype_send_message_nowait("ALTER CHAT %s ENTERPASSWORD %s", chat_id, password);
- }
-
- if (!chat->conv)
- {
- chat->prpl_chat_id = g_str_hash(chat_id);
- chat->conv = serv_got_joined_chat(gc, chat->prpl_chat_id, chat_id);
- purple_conversation_set_data(chat->conv, "chat_id", g_strdup(chat_id));
- if (password != NULL)
- purple_conversation_set_data(chat->conv, "password", g_strdup(password));
- } else {
- convchat = purple_conversation_get_chat_data(chat->conv);
- convchat->left = FALSE;
- }
- skype_send_message_nowait("GET CHAT %s MEMBERS", chat_id);
-
- if (purple_blist_find_chat(gc->account, chat_id) != NULL)
- {
- skype_send_message_nowait("ALTER CHAT %s BOOKMARK", chat_id);
- }
-}
-
-gchar *
-skype_get_chat_name(GHashTable *data)
-{
- gchar *temp;
-
- if (data == NULL)
- return g_strdup("");
-
- temp = g_hash_table_lookup(data, "chat_id");
-
- if (temp == NULL)
- return g_strdup("");
-
- return g_strdup(temp);
-}
-
-gchar *
-skype_cb_real_name(PurpleConnection *gc, int id, const char *who)
-{
- PurpleBuddy *buddy;
- SkypeBuddy *sbuddy;
-
- printf("CB Real name for %s in %d\n", who, id);
-
- buddy = purple_find_buddy(gc->account, who);
- if (buddy && buddy->alias)
- {
- return g_strdup(buddy->alias);
- } else if (buddy && buddy->server_alias)
- {
- return g_strdup(buddy->server_alias);
- } else if (buddy && buddy->proto_data)
- {
- sbuddy = buddy->proto_data;
- if (sbuddy->fullname)
- return g_strdup(sbuddy->fullname);
- }
-
- return NULL;
-}
-
-GList *
-skype_join_chat_info(PurpleConnection *gc)
-{
- GList *m = NULL;
- struct proto_chat_entry *pce;
-
- pce = g_new0(struct proto_chat_entry, 1);
- pce->label = _("Skype Name");
- pce->identifier = "chat_id";
- pce->required = TRUE;
- m = g_list_append(m, pce);
-
- pce = g_new0(struct proto_chat_entry, 1);
- pce->label = _("Password");
- pce->identifier = "password";
- pce->required = FALSE;
- m = g_list_append(m, pce);
-
- return m;
-}
-
-GHashTable *
-skype_join_chat_info_defaults(PurpleConnection *gc, const char *chat_name)
-{
- GHashTable *defaults;
- defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
- if (chat_name != NULL)
- {
- g_hash_table_insert(defaults, "chat_id", g_strdup(chat_name));
- }
- return defaults;
-}
-
-
-void
-skype_alias_buddy(PurpleConnection *gc, const char *who, const char *alias)
-{
- if (who == NULL)
- return;
-
- if (alias == NULL)
- alias = "";
-
- skype_send_message_nowait("SET USER %s DISPLAYNAME %s", who, alias);
-}
-
-gboolean
-skype_offline_msg(const PurpleBuddy *buddy)
-{
- return TRUE;
-}
-
-void
-skype_get_chatmessage_info(int message)
-{
- skype_send_message_nowait("GET CHATMESSAGE %d TYPE", message);
- skype_send_message_nowait("GET CHATMESSAGE %d CHATNAME", message);
- skype_send_message_nowait("GET CHATMESSAGE %d BODY", message);
- skype_send_message_nowait("GET CHATMESSAGE %d FROM_HANDLE", message);
- skype_send_message_nowait("GET CHATMESSAGE %d USERS", message);
- skype_send_message_nowait("GET CHATMESSAGE %d LEAVEREASON", message);
- skype_send_message_nowait("GET CHATMESSAGE %d TIMESTAMP", message);
-}
-
-void
-skype_show_search_users(PurplePluginAction *action)
-{
- PurpleConnection *gc = (PurpleConnection *) action->context;
- purple_request_input(gc, _("Search for Skype Users"),
- _("Search for Skype Users"),
- _("Type the Skype Name, full name or e-mail address of the buddy you are "
- "searching for."),
- NULL, FALSE, FALSE, NULL,
- _("_Search"), G_CALLBACK(skype_search_users),
- _("_Cancel"), NULL,
- purple_connection_get_account(gc), NULL, NULL,
- gc);
-
-}
-
-static void
-skype_search_users(PurpleConnection *gc, const gchar *searchterm)
-{
- PurpleNotifySearchResults *results;
- PurpleNotifySearchColumn *column;
- gchar *userlist;
- gchar **list_of_users;
- int i = 0;
-
- results = purple_notify_searchresults_new();
- if (results == NULL)
- return;
-
- //columns: Full Name, Skype Name, Country/Region, Profile Link
- column = purple_notify_searchresults_column_new(_("Full Name"));
- purple_notify_searchresults_column_add(results, column);
- column = purple_notify_searchresults_column_new(_("Skype Name"));
- purple_notify_searchresults_column_add(results, column);
- column = purple_notify_searchresults_column_new(_("Country/Region"));
- purple_notify_searchresults_column_add(results, column);
-
- //buttons: Add Skype Contact, Close
- purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_ADD,
- skype_searchresults_add_buddy);
-
- userlist = skype_send_message("SEARCH USERS %s", searchterm);
- list_of_users = g_strsplit(&userlist[6], ", ", -1);
- while(list_of_users[i])
- {
- GList *row = NULL;
- row = g_list_append(row, skype_get_user_info(list_of_users[i], "FULLNAME"));
- row = g_list_append(row, g_strdup(list_of_users[i]));
- row = g_list_append(row, g_strconcat(skype_get_user_info(list_of_users[i], "CITY"), ", ", skype_get_user_info(list_of_users[i], "COUNTRY"), NULL));
- purple_notify_searchresults_row_add(results, row);
- i++;
- }
- g_strfreev(list_of_users);
- g_free(userlist);
-
- purple_notify_searchresults(gc, NULL, NULL, NULL, results, NULL, NULL);
-}
-
-void
-skype_searchresults_add_buddy(PurpleConnection *gc, GList *row, void *user_data)
-{
- purple_blist_request_add_buddy(purple_connection_get_account(gc),
- g_list_nth_data(row, 1), NULL, NULL);
-}
-
-/* Like purple_strdup_withhtml, but escapes htmlentities too */
-gchar *
-skype_strdup_withhtml(const gchar *src)
-{
- gulong destsize, i, j;
- gchar *dest;
-
- g_return_val_if_fail(src != NULL, NULL);
-
- /* New length is (length of src) + (number of \n's * 3) + (number of &'s * 5) + (number of <'s * 4) + (number of >'s *4) + (number of "'s * 6) - (number of \r's) + 1 */
- destsize = 1;
- for (i = 0; src[i] != '\0'; i++)
- {
- if (src[i] == '\n' || src[i] == '<' || src[i] == '>')
- destsize += 4;
- else if (src[i] == '&')
- destsize += 5;
- else if (src[i] == '"')
- destsize += 6;
- else if (src[i] != '\r')
- destsize++;
- }
-
- dest = g_malloc(destsize);
-
- /* Copy stuff, ignoring \r's, because they are dumb */
- for (i = 0, j = 0; src[i] != '\0'; i++) {
- if (src[i] == '\n') {
- strcpy(&dest[j], "<BR>");
- j += 4;
- } else if (src[i] == '<') {
- strcpy(&dest[j], "&lt;");
- j += 4;
- } else if (src[i] == '>') {
- strcpy(&dest[j], "&gt;");
- j += 4;
- } else if (src[i] == '&') {
- strcpy(&dest[j], "&amp;");
- j += 5;
- } else if (src[i] == '"') {
- strcpy(&dest[j], "&quot;");
- j += 6;
- } else if (src[i] != '\r')
- dest[j++] = src[i];
- }
-
- dest[destsize-1] = '\0';
-
- return dest;
-}
-
-static void
-skype_display_skype_credit(PurplePluginAction *action)
-{
- gchar *temp, *currency;
- double balance;
-
- temp = skype_send_message("GET PROFILE PSTN_BALANCE");
- balance = atol(&temp[21]);
- g_free(temp);
- balance = balance / 100;
-
- temp = skype_send_message("GET PROFILE PSTN_BALANCE_CURRENCY");
- currency = g_strdup(&temp[30]);
- g_free(temp);
-
- temp = g_strdup_printf("%s %.2f", currency, balance);
-
- skype_debug_info("skype", "Balance: '%s'\n", temp);
- purple_notify_info(this_plugin, _("Skype Balance"), _("Your current Skype credit balance is:"), temp);
- g_free(temp);
- g_free(currency);
-}
-
-gchar *
-skype_set_next_sms_number_for_conversation(PurpleConversation *conv, const gchar *who)
-{
- gchar *sms_reply;
- gchar skype_sms_number[10];
-
- if (sms_convo_link_table == NULL)
- {
- skype_debug_info("skype", "Creating convo_link_table\n");
- sms_convo_link_table = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- sms_reply = skype_send_message("CREATE SMS OUTGOING %s", who);
- sscanf(sms_reply, "SMS %10s ", skype_sms_number);
- g_free(sms_reply);
-
- sms_reply = g_strdup(skype_sms_number);
- skype_debug_info("skype", "putting SMS number %s mobile number %s into the table\n", sms_reply, who);
- g_hash_table_insert(sms_convo_link_table, sms_reply, g_strdup(who));
- purple_conversation_set_data(conv, "skype_next_sms_number", sms_reply);
-
- return sms_reply;
-}
-
-static void
-skype_request_auth_from_blist(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
-
- if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
- return;
-
- buddy = (PurpleBuddy *)node;
-
- skype_send_message_nowait("SET USER %s BUDDYSTATUS 2", buddy->name);
-}
-
-static void
-skype_open_sms_im(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
- SkypeBuddy *sbuddy;
- PurpleConversation *conv;
- gchar *mobile_number = NULL;
-
- if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
- return;
-
- buddy = (PurpleBuddy *)node;
- sbuddy = (SkypeBuddy *)buddy->proto_data;
-
- if (buddy->name[0] == '+')
- mobile_number = buddy->name;
- else if (sbuddy && sbuddy->phone_mobile)
- mobile_number = sbuddy->phone_mobile;
-
- if (mobile_number == NULL)
- return;
-
- //Open a conversation window
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, mobile_number, buddy->account);
- if (conv == NULL)
- {
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, buddy->account, mobile_number);
- } else {
- purple_conversation_present(conv);
- }
-
- purple_conversation_write(conv, NULL, _("This is an SMS message and will cost you money"), PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
- //store the fact that it's an SMS convo in the conversation
- purple_conversation_set_data(conv, "sms_msg", "TRUE");
-
- skype_set_next_sms_number_for_conversation(conv, mobile_number);
-}
-
-int
-skype_send_sms(PurpleConnection *gc, const gchar *who, const gchar *message, PurpleMessageFlags flags)
-{
- PurpleConversation *conv;
- gchar *sms_number;
- gchar *stripped;
-
- if (who[0] != '+')
- return -1;
-
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, purple_connection_get_account(gc));
- if (purple_conversation_get_data(conv, "sms_msg") == NULL)
- return -1;
-
- stripped = purple_markup_strip_html(message);
-
- sms_number = purple_conversation_get_data(conv, "skype_next_sms_number");
- if (sms_number == NULL)
- {
- sms_number = skype_set_next_sms_number_for_conversation(conv, who);
- }
-
- skype_send_message_nowait("SET SMS %s BODY %s", sms_number, stripped);
- skype_send_message_nowait("ALTER SMS %s SEND", sms_number);
-
- //delete the sms number from the conversation
- skype_set_next_sms_number_for_conversation(conv, who);
-
- return 1;
-}
-
-
-static void
-dump_hash_table(gchar *key, gchar *value, gpointer data)
-{
- printf("'%s' = '%s'\n", key, value);
-}
-
-static gboolean
-skype_uri_handler(const char *proto, const char *cmd, GHashTable *params)
-{
- PurpleAccount *acct;
- gchar *temp;
-
- //only deal with skype: uri's
- if (!g_str_equal(proto, "skype") && !(g_str_equal(proto, "\"skype")))
- return FALSE;
-
- /*uri's:
-
- skype: //does nothing
- skype:{buddynames} //open im with {buddynames}
- skype:{buddynames}?chat //open multi-user chat with {buddynames}
- skype:?chat&blob={blob id} //open public multi-user chat with the blob id of {blob id}
- skype:?chat&id={chat id} //open multi-user chat with the id of {chat id}
- skype:{buddynames}?call //call {buddynames}
- skype:{buddyname}?add //add user to buddy list
-
- //not sure about these ones
- skype:{buddynames}?userinfo //get buddy's info?
- skype:{buddynames}?voicemail //send a voice mail message?
- skype:{buddynames}?sendfile //send a file?
- */
- acct = find_acct(purple_plugin_get_id(this_plugin), g_hash_table_lookup(params, "account"));
-
-
- //lets have a look at the hash table!
- skype_debug_info("skype", "dumping uri handler hashtable\n");
- g_hash_table_foreach(params, (GHFunc)dump_hash_table, NULL);
-
- if (g_hash_table_lookup(params, "chat"))
- {
- if (!strlen(cmd))
- {
- //probably a public multi-user chat?
- if ((temp = g_hash_table_lookup(params, "blob")))
- {
- temp = skype_send_message("CHAT CREATEUSINGBLOB %s", temp);
- if (!strlen(temp))
- {
- g_free(temp);
- return FALSE;
- }
- *strchr(strchr(temp, ' '), ' ') = '\0';
- skype_send_message("ALTER %s JOIN", temp);
- g_free(temp);
- return TRUE;
- }
- else if ((temp = g_hash_table_lookup(params, "id")))
- {
- skype_send_message_nowait("ALTER CHAT %s JOIN", temp);
- return TRUE;
- }
- }
- } else if (g_hash_table_lookup(params, "add"))
- {
- purple_blist_request_add_buddy(acct, cmd, NULL, g_hash_table_lookup(params, "displayname"));
- return TRUE;
- } else if (g_hash_table_lookup(params, "call"))
- {
- skype_send_message_nowait("CALL %s", cmd);
- return TRUE;
- } else if (g_hash_table_lookup(params, "userinfo"))
- {
- skype_get_info(NULL, cmd);
- return TRUE;
- } else if (g_hash_table_lookup(params, "voicemail") || g_hash_table_lookup(params, "sendfile"))
- {
- //not sure?
- } else if (strlen(cmd)) {
- //there'll be a bunch of usernames, seperated by comma
- skype_send_message_nowait("CHAT CREATE %s", cmd);
- return TRUE;
- }
-
- //we don't know how to handle this
- return FALSE;
-}
-
-#ifndef INSTANTBIRD
-/*
-Skype info from developer.skype.com and forum.skype.com:
-Audio:
-Audio format
-
-File: WAV PCM
-Sockets: raw PCM samples
-16 KHz mono, 16 bit
-The 16-bit samples are stored as 2's-complement signed integers, ranging from -32768 to 32767.
-there must be a call in progress when these API Audio calls are made to Skype to define the ports.
-big-endian and it uses NO headers when using the Port form of the Audio API.
-
-ALTER CALL <id> SET_INPUT SOUNDCARD="default" | PORT="port_no" | FILE="FILE_LOCATION"
-
-This enables you to set a port or a wav file as a source of your voice, instead of a microphone.
-
-ALTER CALL <id> SET_OUTPUT SOUNDCARD="default" | PORT="port_no" | FILE="FILE_LOCATION"
-
-Redirects incoming transmission to a port or a wav file.
-
-With SET INPUT Skype acts like a Server, meaning, it waits to receive Audio Data from your application, so it does NOT act like a client. It will Open a Port and wait for your application to send Audio Data on the port defined, this is what a server does, a web server waits for a request on Port 80 for example.
-
-With SET OUTPUT Skype acts like a Client, meaning, it sends data to your application, your application is waiting for Skype to send Audio data, which means your application acts as a listener ("Server").
-
-
-Video:
-SET VIDE0_IN [<device_name>]
-
-Have to sniff for video window/object, very platform dependant
-
-*/
-
-//our call to someone else got ended
-static void
-skype_handle_call_got_ended(const char *callnumber_string)
-{
- PurpleMedia *media;
-
- if (call_media_hash == NULL)
- {
- return;
- }
-
- media = g_hash_table_lookup(call_media_hash, callnumber_string);
- if (media != NULL)
- {
- purple_media_end(media, NULL, NULL);
- }
-}
-
-//called when the user accepts an incomming call from the ui
-static void
-skype_send_call_accept(const char *callnumber_string)
-{
- char *temp;
-
- if (!callnumber_string || !strlen(callnumber_string))
- return;
- temp = skype_send_message("ALTER CALL %s ANSWER", callnumber_string);
- if (!temp || strlen(temp) == 0)
- {
- //there was an error, hang up the the call
- return skype_handle_call_got_ended(callnumber_string);
- }
-}
-
-//called when the user rejects an incomming call from the ui
-static void
-skype_send_call_reject(const char *callnumber_string)
-{
- if (!callnumber_string || !strlen(callnumber_string))
- return;
- skype_send_message_nowait("ALTER CALL %s END HANGUP", callnumber_string);
-}
-
-//called when the user ends a call from the ui
-static void
-skype_send_call_end(const char *callnumber_string)
-{
- if (!callnumber_string || !strlen(callnumber_string))
- return;
- skype_send_message_nowait("ALTER CALL %s HANGUP", callnumber_string);
-}
-
-//purple_smarshal_VOID__ENUM_STRING_STRING
-static void
-skype_media_state_changed(PurpleMedia *media, PurpleMediaState state, gchar *session_id, gchar *participant, const gchar *callnumber_string)
-{
- if (state == PURPLE_MEDIA_STATE_END)
- {
- g_hash_table_remove(call_media_hash, callnumber_string);
- }
-}
-
-static void
-skype_stream_info_changed(PurpleMedia *media, PurpleMediaInfoType type, gchar *session_id, gchar *participant, gboolean local,
- const gchar *callnumber_string)
-{
- if (type == PURPLE_MEDIA_INFO_ACCEPT) {
- skype_send_call_accept(callnumber_string);
- } else if (type == PURPLE_MEDIA_INFO_HANGUP) {
- skype_send_call_end(callnumber_string);
- } else if (type == PURPLE_MEDIA_INFO_REJECT) {
- skype_send_call_reject(callnumber_string);
- }
-}
-
-//called by the UI to say, please start a media call
-gboolean
-skype_media_initiate(PurpleAccount *account, const char *who, PurpleMediaSessionType type)
-{
- PurpleMedia *media;
- gchar *temp;
-
- if (call_media_hash == NULL)
- call_media_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-
- //Use skype's own audio/video stuff for now
- media = purple_media_manager_create_media(purple_media_manager_get(), account, "fsrtpconference", who, TRUE);
-
- temp = skype_send_message("CALL %s", who);
- if (!temp || !strlen(temp))
- {
- g_free(temp);
- return FALSE;
- }
- if (media != NULL)
- {
- gchar *callnumber_string;
-
- callnumber_string = g_new(gchar, 10+1);
- sscanf(temp, "CALL %s ", callnumber_string);
-
- purple_media_set_prpl_data(media, callnumber_string);
- g_hash_table_insert(call_media_hash, callnumber_string, media);
-
- g_signal_connect_swapped(G_OBJECT(media), "accepted", G_CALLBACK(skype_send_call_accept), callnumber_string);
- g_signal_connect(G_OBJECT(media), "state-changed", G_CALLBACK(skype_media_state_changed), callnumber_string);
- g_signal_connect(G_OBJECT(media), "stream-info", G_CALLBACK(skype_stream_info_changed), callnumber_string);
- } else {
- skype_debug_info("skype_media", "media is NULL\n");
- }
- return TRUE;
-}
-
-PurpleMediaCaps
-skype_get_media_caps(PurpleAccount *account, const char *who)
-{
- PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
- PurpleBuddy *buddy = NULL;
- SkypeBuddy *sbuddy = NULL;
-
- buddy = purple_find_buddy(account, who);
- if (buddy != NULL)
- sbuddy = buddy->proto_data;
-
- caps |= PURPLE_MEDIA_CAPS_AUDIO;
- if (buddy && sbuddy && sbuddy->is_video_capable)
- caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
-
- return caps;
-}
-
-//there's an incoming call... deal with it
-static void
-skype_handle_incoming_call(PurpleConnection *gc, const char *callnumber_str)
-{
- PurpleMedia *media;
- gchar *temp;
- gchar *who;
-
- if (call_media_hash == NULL)
- {
- call_media_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
- } else {
- media = g_hash_table_lookup(call_media_hash, callnumber_str);
- if (media != NULL)
- {
- //we've already dealt with this
- return;
- }
- }
-
- temp = skype_send_message("GET CALL %s PARTNER_HANDLE", callnumber_str);
- if (!temp || !strlen(temp))
- return;
-
- who = g_strdup(&temp[21+strlen(callnumber_str)]);
- g_free(temp);
-
- media = purple_media_manager_create_media(purple_media_manager_get(), purple_connection_get_account(gc), "fsrtpconference", who, FALSE);
-
- if (media != NULL)
- {
- gchar *callnumber_string = g_strdup(callnumber_str);
-
- purple_media_set_prpl_data(media, callnumber_string);
- g_hash_table_insert(call_media_hash, callnumber_string, media);
-
- purple_media_add_stream(media, "skype-audio1", who, PURPLE_MEDIA_AUDIO, FALSE, "nice", 0, NULL);
- purple_media_add_stream(media, "skype-audio2", who, PURPLE_MEDIA_AUDIO, FALSE, "rawudp", 0, NULL);
- //g_signal_emit(media, purple_media_signals[STATE_CHANGED], 0, PURPLE_MEDIA_STATE_NEW, "skype-audio", who);
- //g_signal_emit_by_name(media, "state-changed", 0, PURPLE_MEDIA_STATE_NEW, "skype-audio", who);
-
- g_signal_connect_swapped(G_OBJECT(media), "accepted", G_CALLBACK(skype_send_call_accept), callnumber_string);
- g_signal_connect(G_OBJECT(media), "state-changed", G_CALLBACK(skype_media_state_changed), callnumber_string);
- g_signal_connect(G_OBJECT(media), "stream-info", G_CALLBACK(skype_stream_info_changed), callnumber_string);
- } else {
- skype_debug_info("skype_media", "purple_mmcm returned NULL\n");
- }
-}
-#endif
-
-struct _skype_account_alias_cb {
- PurpleAccount *account;
- gchar *message;
- _account_char_fn callback;
-};
-
-gboolean
-skype_account_alias_cb(gpointer data)
-{
- struct _skype_account_alias_cb *info = data;
-
- info->callback(info->account, info->message);
-
- g_free(info->message);
- g_free(info);
-
- return FALSE;
-}
-
-void
-skype_set_public_alias(PurpleConnection *gc, const char *alias, _account_char_fn success_cb, _account_char_fn failure_cb)
-{
- struct _skype_account_alias_cb *info;
-
- if (alias && *alias)
- {
- skype_send_message_nowait("SET PROFILE FULLNAME %s", alias);
- if (success_cb)
- {
- info = g_new0(struct _skype_account_alias_cb, 1);
- info->callback = success_cb;
- info->account = gc->account;
- info->message = g_strdup(alias);
-
- purple_timeout_add(0, skype_account_alias_cb, info);
- }
- } else {
- if (failure_cb)
- {
- info = g_new0(struct _skype_account_alias_cb, 1);
- info->callback = failure_cb;
- info->account = gc->account;
- info->message = g_strdup("Cannot be blank");
-
- purple_timeout_add(0, skype_account_alias_cb, info);
- }
- }
-}
-
-void
-skype_get_public_alias(PurpleConnection *gc, _account_char_fn success_cb, _account_char_fn failure_cb)
-{
- struct _skype_account_alias_cb *info;
- gchar *alias;
-
- info = g_new0(struct _skype_account_alias_cb, 1);
- alias = skype_send_message("GET PROFILE FULLNAME");
-
- info = g_new0(struct _skype_account_alias_cb, 1);
- info->callback = success_cb;
- info->account = gc->account;
- info->message = g_strdup(&alias[16]);
-
- purple_timeout_add(0, skype_account_alias_cb, info);
-
- g_free(alias);
-}
diff --git a/libskypekit/libskypekit.cpp b/libskypekit/libskypekit.cpp
deleted file mode 100644
index 1c4a79c..0000000
--- a/libskypekit/libskypekit.cpp
+++ /dev/null
@@ -1,1845 +0,0 @@
-/*
- * libskypekit.cpp
- * skypekit
- *
- * Created by MyMacSpace on 19/04/10.
- * Copyright 2010 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "libskypekit.h"
-
-Contact::Ref find_contact(Skype *skype, const char *who)
-{
- SEString skypename = who;
- ContactGroup::Ref cg;
- Contact::Refs contacts;
- if (!skype->GetHardwiredContactGroup(ContactGroup::ALL_KNOWN_CONTACTS, cg) || !cg->GetContacts(contacts)) {
- //Unable to get contact list
- return Contact::Ref(0);
- }
-
- Sid::String identity;
- for (uint i = 0; i < contacts.size(); i++) {
- contacts[i]->GetIdentity(identity);
- if (contacts[i] && identity == skypename) {
- return contacts[i];
- }
- }
-
- return Contact::Ref(0);
-}
-
-ContactGroup::Ref find_group(Skype *skype, Sid::String& groupname)
-{
- ContactGroup::Refs cgs;
- ContactGroup::Ref cg;
- if (!skype->GetCustomContactGroups(cgs))
- return ContactGroup::Ref(0);
-
- while((cg = cgs.peek()))
- {
- SEString displayname;
- cg->GetPropGivenDisplayname(displayname);
- if (displayname.equals(groupname))
- return cg;
- }
-
- return ContactGroup::Ref(0);
-}
-
-Conversation::Ref find_conversation(Skype *skype, const char *who)
-{
- SEStringList participants;
- Conversation::Ref conv;
- Sid::String skypename = who;
-
- participants.append(skypename);
- skype->GetConversationByParticipants(participants, conv, true, false);
-
- return conv;
-}
-
-const char *skype_list_icon(PurpleAccount *account, PurpleBuddy *buddy)
-{
- return "skype";
-}
-
-GList *skype_status_types(PurpleAccount *acct)
-{
- GList *types;
- PurpleStatusType *status;
-
- purple_debug_info("skype", "returning status types\n");
-
- types = NULL;
-
- /* Statuses are almost all the same. Define a macro to reduce code repetition. */
-#define _SKYPE_ADD_NEW_STATUS(prim,id,name) status = \
- purple_status_type_new_with_attrs( \
- prim, /* PurpleStatusPrimitive */ \
- id, /* id */ \
- _(name), /* name */ \
- TRUE, /* savable */ \
- TRUE, /* user_settable */ \
- FALSE, /* not independent */ \
- \
- /* Attributes - each status can have a message. */ \
- "message", \
- _("Mood"), \
- purple_value_new(PURPLE_TYPE_STRING), \
- NULL); \
- \
- \
- types = g_list_append(types, status)
-
-
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE, "ONLINE", "Online");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_AVAILABLE, "SKYPEME", "SkypeMe");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_AWAY, "AWAY", "Away");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_EXTENDED_AWAY, "NA", "Not Available");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_UNAVAILABLE, "DND", "Do Not Disturb");
- _SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_INVISIBLE, "INVISIBLE", "Invisible");
- //_SKYPE_ADD_NEW_STATUS(PURPLE_STATUS_OFFLINE, "Offline");
-
- //User status could be 'logged out' - make not settable
- status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, "LOGGEDOUT", _("Logged out"), FALSE, FALSE, FALSE);
- types = g_list_append(types, status);
-
- //User could be a SkypeOut contact
- if (purple_account_get_bool(acct, "skypeout_online", TRUE))
- {
- status = purple_status_type_new_full(PURPLE_STATUS_MOBILE, "SKYPEOUT", _("SkypeOut"), FALSE, FALSE, FALSE);
- } else {
- status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, "SKYPEOUT", _("SkypeOut"), FALSE, FALSE, FALSE);
- }
- types = g_list_append(types, status);
-
- //Offline people shouldn't have status messages
- status = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, "OFFLINE", _("Offline"), FALSE, TRUE, FALSE);
- types = g_list_append(types, status);
-
- return types;
-}
-
-void skype_login(PurpleAccount *acct)
-{
- PurpleConnection *pc;
- SEString AppToken = SKYPE_APP_TOKEN;
- MyAccount::Ref A;
- MySkype *skype = 0;
- SETCPTransport *transport = 0;
- SEString accountName = acct->username;
- SEString accountPW = acct->password;
-
- pc = purple_account_get_connection(acct);
- pc->proto_data = NULL;
- pc->flags = (PurpleConnectionFlags) (PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR);
-
- transport = new SETCPTransport(purple_account_get_string(acct, "host", "127.0.0.1"),
- purple_account_get_int(acct, "port", 8963));
- skype = new MySkype(transport);
- pc->proto_data = skype;
-
- purple_debug_info("skypekit", "Pre init()\n");
- if (!skype->init(1, 1))
- {
- purple_connection_error(pc, "Could not connect");
- return;
- }
- purple_debug_info("skypekit", "Pre start()\n");
- skype->start();
- purple_debug_info("skypekit", "Post start()\n");
- skype->SetApplicationToken(AppToken);
- purple_debug_info("skypekit", "Set token to %s\n", SKYPE_APP_TOKEN);
-
- skype->pa = acct;
- skype->pc = pc;
-
- if (skype->GetAccount(accountName, A))
- {
- purple_debug_info("skypekit", "Got account\n");
- if (!A->LoginWithPassword(accountPW, false, true))
- {
- purple_connection_error(pc, "Invalid username or password2");
- return;
- }
- } else {
- purple_connection_error(pc, "Invalid username or password");
- return;
- }
-
- A->SetAvailability(Contact::ONLINE);
-
-}
-
-void skype_close(PurpleConnection *pc)
-{
- Skype *skype = (Skype *) pc->proto_data;
- PurpleAccount *account = pc->account;
- MyAccount::Ref A;
- SEString accountName = account->username;
-
- if (!pc || !pc->proto_data)
- return;
-
- purple_debug_info("skypekit", "Logging out\n");
- if(skype->GetAccount(accountName, A))
- {
- purple_debug_info("skypekit", "...\n");
- A->Logout(true);
- }
- purple_debug_info("skypekit", "Logged out\n");
-
- skype->stop();
- purple_debug_info("skypekit", "Stopped\n");
- skype->cleanup();
- purple_debug_info("skypekit", "Clean\n");
-
- delete skype;
-}
-
-int skype_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, PurpleMessageFlags flags)
-{
- Skype *skype = (Skype *)gc->proto_data;
- Message::Ref msg;
-
- ConversationRef conv = find_conversation(skype, who);
-
- if (conv->PostText(message, msg, true))
- {
- return strlen(message);
- } else {
- return -1;
- }
-}
-
-int
-skype_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags)
-{
- MySkype *skype = (MySkype *)gc->proto_data;
- Conversation *conv = skype->newConversation(id);
- Message::Ref msg;
-
- if (conv->PostText(message, msg, true))
- {
- serv_got_chat_in(gc, id, purple_account_get_username(purple_connection_get_account(gc)), PURPLE_MESSAGE_SEND,
- message, time(NULL));
-
- return 1;
- } else {
- return -1;
- }
-}
-
-void
-skype_set_chat_topic(PurpleConnection *gc, int id, const char *topic)
-{
- MySkype *skype = (MySkype *)gc->proto_data;
- Conversation *conv = skype->newConversation(id);
-
- conv->SetTopic(topic);
-}
-
-void
-skype_set_status(PurpleAccount *account, PurpleStatus *status)
-{
- PurpleConnection *pc = purple_account_get_connection(account);
- MySkype *skype = (MySkype *)pc->proto_data;
- PurpleStatusType *type;
- const char *message;
- const char *statusid;
- MyAccount::Ref A;
- SEString accountName = account->username;
-
- if (!skype->GetAccount(accountName, A))
- return;
-
- type = purple_status_get_type(status);
- statusid = purple_status_type_get_id(type);
- if (g_str_equal(statusid, "ONLINE"))
- {
- A->SetAvailability(Contact::ONLINE);
- } else if (g_str_equal(statusid, "SKYPEME"))
- {
- A->SetAvailability(Contact::SKYPE_ME);
- } else if (g_str_equal(statusid, "AWAY"))
- {
- A->SetAvailability(Contact::AWAY);
- } else if (g_str_equal(statusid, "NA"))
- {
- A->SetAvailability(Contact::NOT_AVAILABLE);
- } else if (g_str_equal(statusid, "DND"))
- {
- A->SetAvailability(Contact::DO_NOT_DISTURB);
- } else if (g_str_equal(statusid, "INVISIBLE"))
- {
- A->SetAvailability(Contact::INVISIBLE);
- } else if (g_str_equal(statusid, "OFFLINE"))
- {
- A->SetAvailability(Contact::OFFLINE);
- }
-
- message = purple_status_get_attr_string(status, "message");
- if (message == NULL)
- message = "";
- else
- message = purple_markup_strip_html(message);
-
- A->SetStrProperty(Contact::P_MOOD_TEXT, message);
-}
-
-unsigned int
-skype_send_typing(PurpleConnection *gc, const gchar *who, PurpleTypingState state)
-{
- Skype *skype = (Skype *)gc->proto_data;
- Message::Ref msg;
-
- //Don't send typing notifications to self
- if (g_str_equal(who, gc->account->username))
- return 999;
-
- ConversationRef conv = find_conversation(skype, who);
-
- switch(state)
- {
- case PURPLE_NOT_TYPING:
- conv->SetMyTextStatusTo(Participant::TEXT_NA);
- break;
- case PURPLE_TYPING:
- conv->SetMyTextStatusTo(Participant::WRITING);
- break;
- case PURPLE_TYPED:
- conv->SetMyTextStatusTo(Participant::READING);
- break;
- default:
- break;
- }
-
- return 999;
-}
-
-const char *
-skype_normalize(const PurpleAccount *acct, const char *who)
-{
- static gchar *last_normalize = NULL;
- g_free(last_normalize);
- last_normalize = g_utf8_strdown(who, -1);
- return last_normalize;
-}
-
-void skype_add_deny(PurpleConnection *gc, const char *who)
-{
- Skype *skype = (Skype *)gc->proto_data;
- Contact::Ref contact = find_contact(skype, who);
-
- if (contact)
- {
- contact->SetBlocked(true);
- }
-}
-void skype_rem_deny(PurpleConnection *gc, const char *who)
-{
- Skype *skype = (Skype *)gc->proto_data;
- Contact::Ref contact = find_contact(skype, who);
-
- if (contact)
- {
- contact->SetBlocked(false);
- }
-}
-void skype_add_permit(PurpleConnection *gc, const char *who)
-{
- Skype *skype = (Skype *)gc->proto_data;
- Contact::Ref contact = find_contact(skype, who);
-
- if (contact)
- {
- contact->SetBuddyStatus(true);
- }
-}
-void
-skype_rem_permit(PurpleConnection *gc, const char *who)
-{
- Skype *skype = (Skype *)gc->proto_data;
- Contact::Ref contact = find_contact(skype, who);
-
- if (contact)
- {
- contact->SetBuddyStatus(false);
- }
-}
-
-char *
-skype_status_text(PurpleBuddy *buddy)
-{
- PurpleAccount *account = purple_buddy_get_account(buddy);
- PurpleConnection *pc = purple_account_get_connection(account);
- Skype *skype = (Skype *)pc->proto_data;
- SEString mood;
-
- Contact::Ref contact = find_contact(skype, buddy->name);
-
- if (contact)
- {
- mood = contact->GetProp(Contact::P_MOOD_TEXT);
- }
-
- if (mood.isEmpty())
- {
- return NULL;
- }
-
- return g_strdup(mood);
-}
-
-void
-skype_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *userinfo, gboolean full)
-{
- PurplePresence *presence;
- PurpleStatus *status;
- const gchar *text;
-
- presence = purple_buddy_get_presence(buddy);
- status = purple_presence_get_active_status(presence);
- purple_notify_user_info_add_pair(userinfo, _("Status"), purple_status_get_name(status));
-
- text = purple_status_get_attr_string(status, "message");
- if (text)
- purple_notify_user_info_add_pair(userinfo, _("Mood"), text);
-}
-
-void
-skype_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group)
-{
- Skype *skype = (Skype *)pc->proto_data;
- bool Found = false;
- Contact::Ref NewContact;
- SEString name = buddy->name;
- SEString alias = buddy->alias;
- ContactGroup::Ref NewGroup;
- SEString groupname = group->name;
-
- Found = skype->GetContact(name, NewContact);
- if (!Found)
- return;
-
- NewContact->GiveDisplayName(alias);
- NewContact->SendAuthRequest("");
- NewContact->SetBuddyStatus(true);
-
- NewGroup = find_group(skype, groupname);
- if (!NewGroup)
- {
- skype->CreateCustomContactGroup(NewGroup);
- NewGroup->GiveDisplayName(groupname);
- }
- NewGroup->AddContact(NewContact);
-
-}
-
-void
-skype_remove_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group)
-{
- Skype *skype = (Skype *)pc->proto_data;
- bool Found = false;
- Contact::Ref RemovableContact;
- SEString name = buddy->name;
- SEString alias = buddy->alias;
- ContactGroup::Ref NewGroup;
- SEString groupname = group->name;
-
- Found = skype->GetContact(name, RemovableContact);
-
- NewGroup = find_group(skype, groupname);
- if (NewGroup)
- NewGroup->RemoveContact(RemovableContact);
-}
-
-const char *
-skype_list_emblem(PurpleBuddy *buddy)
-{
- PurpleConnection *pc = purple_account_get_connection(buddy->account);
- Skype *skype = (Skype *)pc->proto_data;
- Contact::Ref contact = find_contact(skype, buddy->name);
- Contact::AVAILABILITY avail;
- bool hasCap = false;
-
- if (contact)
- {
- contact->GetPropAvailability(avail);
- switch(avail)
- {
- case Contact::ONLINE_FROM_MOBILE:
- case Contact::AWAY_FROM_MOBILE:
- case Contact::NOT_AVAILABLE_FROM_MOBILE:
- case Contact::DO_NOT_DISTURB_FROM_MOBILE:
- case Contact::SKYPE_ME_FROM_MOBILE:
- return "mobile";
- break;
- default:
- break;
- }
- if (contact->HasCapability(Contact::CAPABILITY_MOBILE_DEVICE, hasCap)
- && hasCap == true)
- return "mobile";
-
- if (contact->HasCapability(Contact::CAPABILITY_VIDEO, hasCap)
- && hasCap == true)
- return "video";
- }
-
- return NULL;
-}
-
-gboolean
-skype_offline_msg(const PurpleBuddy *buddy)
-{
- return TRUE;
-}
-
-// Since this function isn't public, and we need it to be, redefine it here
-static void
-purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatusType status)
-{
- g_return_if_fail(xfer != NULL);
-
- if (xfer->status == status)
- return;
-
- xfer->status = status;
-
- if(xfer->type == PURPLE_XFER_SEND) {
- switch(status) {
- case PURPLE_XFER_STATUS_ACCEPTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-accept", xfer);
- break;
- case PURPLE_XFER_STATUS_STARTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-start", xfer);
- break;
- case PURPLE_XFER_STATUS_DONE:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-complete", xfer);
- break;
- case PURPLE_XFER_STATUS_CANCEL_LOCAL:
- case PURPLE_XFER_STATUS_CANCEL_REMOTE:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-cancel", xfer);
- break;
- default:
- break;
- }
- } else if(xfer->type == PURPLE_XFER_RECEIVE) {
- switch(status) {
- case PURPLE_XFER_STATUS_ACCEPTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-accept", xfer);
- break;
- case PURPLE_XFER_STATUS_STARTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-start", xfer);
- break;
- case PURPLE_XFER_STATUS_DONE:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-complete", xfer);
- break;
- case PURPLE_XFER_STATUS_CANCEL_LOCAL:
- case PURPLE_XFER_STATUS_CANCEL_REMOTE:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-cancel", xfer);
- break;
- default:
- break;
- }
- }
-}
-
-gboolean
-skype_can_receive_file(PurpleConnection *pc, const char *who)
-{
- return TRUE;
-}
-
-void
-skype_xfer_cancel_send(PurpleXfer *xfer)
-{
- purple_debug_info("skypekit", "xfer_cancel_send\n");
- Transfer *transfer = (Transfer *) xfer->data;
- if (transfer != NULL)
- {
- transfer->Cancel();
- }
-}
-
-void
-skype_xfer_cancel_recv(PurpleXfer *xfer)
-{
- purple_debug_info("skypekit", "xfer_cancel_recv\n");
- Transfer *transfer = (Transfer *) xfer->data;
- if (transfer != NULL)
- {
- transfer->Cancel();
- }
-}
-
-void
-skype_xfer_init(PurpleXfer *xfer)
-{
- purple_debug_info("skypekit", "xfer_init\n");
- Skype *skype = (Skype *)xfer->account->gc->proto_data;
- SEFilenameList filenames;
- Message::Ref msg;
- TRANSFER_SENDFILE_ERROR error;
- SEFilename error_filename;
- SEString body;
-
- if (xfer == NULL)
- return;
-
- purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_NOT_STARTED);
-
- if (xfer->type == PURPLE_XFER_SEND)
- {
- ConversationRef conv = find_conversation(skype, xfer->who);
-
- filenames.append(xfer->local_filename);
- body += xfer->message;
- if (!conv->PostFiles(filenames, body, error, error_filename) || error)
- {
- purple_debug_error("skypekit", "Failed to post %s (from %s) because %d\n", (const char *)error_filename, (const char *)body, error);
- purple_xfer_error(xfer->type, xfer->account, xfer->who, "Error sending file");
- purple_xfer_cancel_local(xfer);
- return;
- } else {
- purple_debug_info("skypekit", "Send file %s\n", xfer->local_filename);
- purple_xfer_set_cancel_send_fnc(xfer, skype_xfer_cancel_send);
- }
- } else if (xfer->type == PURPLE_XFER_RECEIVE)
- {
- purple_debug_info("skypekit", "incoming file\n");
- bool result;
- //transfer->Accept("path", result);
- //if (!result) {
- //accept failed
- //}
- Transfer *transfer = (Transfer *) xfer->data;
- if (transfer != NULL)
- {
- transfer->Accept(purple_xfer_get_local_filename(xfer), result);
- if (!result)
- {
- purple_debug_error("skypekit", "accept failed\n");
- } else {
- purple_xfer_set_cancel_recv_fnc(xfer, skype_xfer_cancel_recv);
- }
- }
- }
-}
-
-void
-skype_xfer_start(PurpleXfer *xfer)
-{
- purple_debug_info("skypekit", "xfer_start\n");
-}
-
-void
-skype_xfer_end(PurpleXfer *xfer)
-{
- purple_debug_info("skypekit", "xfer_end\n");
-}
-
-//called when the incoming file request is denied
-void
-skype_xfer_request_denied(PurpleXfer *xfer)
-{
- purple_debug_info("skypekit", "xfer_request_denied\n");
- Transfer *transfer = (Transfer *) xfer->data;
- if (transfer != NULL)
- {
- transfer->Cancel();
- }
-}
-
-PurpleXfer *
-skype_xfer_new(PurpleConnection *pc, const char *who)
-{
- purple_debug_info("skypekit", "xfer_new\n");
- PurpleXfer *xfer = NULL;
-
- xfer = purple_xfer_new(pc->account, PURPLE_XFER_SEND, who);
-
- purple_xfer_set_init_fnc(xfer, skype_xfer_init);
- //purple_xfer_set_start_fnc(xfer, skype_xfer_start);
- //purple_xfer_set_end_fnc(xfer, skype_xfer_end);
- purple_xfer_set_cancel_send_fnc(xfer, skype_xfer_cancel_send);
- //purple_xfer_set_cancel_recv_fnc(xfer, skype_xfer_cancel_recv);
-
- return xfer;
-}
-
-void
-skype_send_file(PurpleConnection *pc, const char *who, const char *filename)
-{
- purple_debug_info("skypekit", "send_file\n");
- PurpleXfer *xfer = skype_xfer_new(pc, who);
-
- if (filename)
- {
- purple_xfer_request_accepted(xfer, filename);
- } else {
- purple_xfer_request(xfer);
- }
-}
-
-void
-skype_get_info(PurpleConnection *pc, const gchar *username)
-{
- PurpleNotifyUserInfo *user_info;
- Skype *skype = (Skype *) pc->proto_data;
- MyContact::Ref contact = find_contact(skype, username);
-
- SEIntList Keys;
- SEIntDict Values;
-
- Keys.append(Contact::P_SKYPENAME);
- Keys.append(Contact::P_FULLNAME);
- Keys.append(Contact::P_MOOD_TEXT);
- Keys.append(Contact::P_BIRTHDAY);
- Keys.append(Contact::P_GENDER);
- Keys.append(Contact::P_LANGUAGES);
- Keys.append(Contact::P_COUNTRY);
- Keys.append(Contact::P_GIVEN_AUTHLEVEL);
- Keys.append(Contact::P_TIMEZONE);
- Keys.append(Contact::P_NROF_AUTHED_BUDDIES);
- Keys.append(Contact::P_ABOUT);
- Values = contact->GetProps(Keys);
-
- user_info = purple_notify_user_info_new();
-
- purple_notify_user_info_add_section_header(user_info, _("Contact Info"));
- purple_notify_user_info_add_pair(user_info, _("Skype Name"), Values.find(Contact::P_SKYPENAME));
- purple_notify_user_info_add_pair(user_info, _("Full Name"), Values.find(Contact::P_FULLNAME));
- purple_notify_user_info_add_pair(user_info, _("Mood Text"), Values.find(Contact::P_MOOD_TEXT));
-
- purple_notify_user_info_add_section_break(user_info);
-
- purple_notify_user_info_add_section_header(user_info, _("Personal Information"));
- struct tm birthday_time;
- purple_str_to_time(Values.find(Contact::P_BIRTHDAY), TRUE, &birthday_time, NULL, NULL);
- purple_notify_user_info_add_pair(user_info, _("Birthday"), purple_date_format_short(&birthday_time));
- purple_notify_user_info_add_pair(user_info, _("Gender"), Values.find(Contact::P_GENDER).toUInt() == 1 ? _("Male") : _("Female"));
- purple_notify_user_info_add_pair(user_info, _("Preferred Language"), Values.find(Contact::P_LANGUAGES));
- purple_notify_user_info_add_pair(user_info, _("Country"), Values.find(Contact::P_COUNTRY));
- purple_notify_user_info_add_pair(user_info, _("Authorization Granted"), Values.find(Contact::P_GIVEN_AUTHLEVEL).toUInt() == Contact::AUTHORIZED_BY_ME ? _("Yes") : _("No"));
- purple_notify_user_info_add_pair(user_info, _("Blocked"), Values.find(Contact::P_GIVEN_AUTHLEVEL).toUInt() == Contact::BLOCKED_BY_ME ? _("Yes") : _("No"));
-
- gchar *temp;
- purple_notify_user_info_add_pair(user_info, _("Timezone"), temp = g_strdup_printf("UMT %+.1f", ((double)Values.find(Contact::P_TIMEZONE).toUInt()) / 3600 - 24));
- g_free(temp);
-
- purple_notify_user_info_add_pair(user_info, _("Number of buddies"), Values.find(Contact::P_NROF_AUTHED_BUDDIES));
-
- purple_notify_user_info_add_section_break(user_info);
-
- purple_notify_user_info_add_pair(user_info, NULL, Values.find(Contact::P_ABOUT));
-
- purple_notify_userinfo(pc, username, user_info, NULL, NULL);
- purple_notify_user_info_destroy(user_info);
-}
-
-void
-skype_alias_buddy(PurpleConnection *pc, const char *who, const char *alias)
-{
- Skype *skype = (Skype *)pc->proto_data;
- SEString displayname = alias;
- Contact::Ref contact = find_contact(skype, who);
-
- contact->GiveDisplayName(displayname);
-}
-
-void
-skype_set_buddy_icon(PurpleConnection *pc, PurpleStoredImage *img)
-{
- Skype *skype = (Skype *)pc->proto_data;
- MyAccount::Ref A;
- SEString accountName = pc->account->username;
- SEBinary avatarImg;
-
- avatarImg.set(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
-
- if (!skype->GetAccount(accountName, A))
- return;
-
- A->SetBinProperty(Account::P_AVATAR_IMAGE, avatarImg);
-}
-
-static const char *
-skype_contact_status_to_id(int availability)
-{
- const char *status;
- switch(availability)
- {
- case Contact::ONLINE:
- case Contact::ONLINE_FROM_MOBILE:
- status = "ONLINE";
- break;
- case Contact::AWAY:
- case Contact::AWAY_FROM_MOBILE:
- status = "AWAY";
- break;
- case Contact::NOT_AVAILABLE:
- case Contact::NOT_AVAILABLE_FROM_MOBILE:
- status = "NA";
- break;
- case Contact::SKYPE_ME:
- case Contact::SKYPE_ME_FROM_MOBILE:
- status = "SKYPEME";
- break;
- case Contact::DO_NOT_DISTURB:
- case Contact::DO_NOT_DISTURB_FROM_MOBILE:
- status = "DND";
- break;
- case Contact::INVISIBLE:
- status = "INVISIBLE";
- break;
- case Contact::OFFLINE:
- case Contact::OFFLINE_BUT_VM_ABLE:
- case Contact::OFFLINE_BUT_CF_ABLE:
- //case Contact::PENDINGAUTH:
- //case Contact::BLOCKED:
- default:
- status = "OFFLINE";
- break;
- }
-
- return status;
-}
-
-typedef struct {
- gpointer me;
- int prop;
- SEString value;
-} SKOnChangeStructHelper;
-
-gboolean
-MyAccountOnChangeTimeout(gpointer data)
-{
- SKOnChangeStructHelper *helper = (SKOnChangeStructHelper *) data;
- MyAccount *account = (MyAccount *) helper->me;
- gint prop = (int)helper->prop;
- account->OnChangeThreadSafe(prop, helper->value);
- g_free(helper);
- return FALSE;
-}
-
-void MyAccount::OnChange(int prop)
-{
- SKOnChangeStructHelper *helper = g_new0(SKOnChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->prop = prop;
- helper->value = this->GetProp(prop);
-
- SEStringList DebugStrings = this->getPropDebug(prop, helper->value);
- purple_debug_info("skypekit", "Account %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- purple_timeout_add(1, MyAccountOnChangeTimeout, helper);
- return;
-}
-void MyAccount::OnChangeThreadSafe(int prop, const SEString& value)
-{
- if (prop == Account::P_STATUS)
- {
- Account::STATUS status = (Account::STATUS) value.toUInt();
- size_t progress;
- const gchar *status_text;
-
- switch(status)
- {
- case Account::LOGGED_OUT:
- case Account::LOGGED_OUT_AND_PWD_SAVED:
- case Account::LOGGING_OUT:
- status_text = "Logged out";
- progress = 0;
- break;
- case Account::CONNECTING_TO_P2P:
- status_text = "Connecting to P2P network";
- progress = 1;
- break;
- case Account::CONNECTING_TO_SERVER:
- status_text = "Connecting to login server";
- progress = 2;
- break;
- case Account::LOGGING_IN:
- status_text = "Waiting for response from server";
- progress = 3;
- break;
- case Account::INITIALIZING:
- status_text = "Response OK, initialising structures";
- progress = 4;
- break;
- case Account::LOGGED_IN:
- status_text = "Logged in";
- progress = 5;
- break;
- }
-
- purple_connection_update_progress(this->pc, status_text, progress, 6);
- }
-
- if ((prop == Account::P_STATUS) && (value.toUInt() == Account::LOGGED_IN))
- {
- purple_connection_set_state(this->pc, PURPLE_CONNECTED);
- purple_debug_info("skypekit", "Login complete.\n");
-
- //Download the buddy list
-
- ContactGroup::Ref SkypeBuddies;
- Skype *skype = (Skype *)this->pc->proto_data;
- skype->GetHardwiredContactGroup(ContactGroup::ALL_BUDDIES, SkypeBuddies);
-
- ContactRefs MyContactList;
- SkypeBuddies->GetContacts(MyContactList);
-
- PurpleBuddy *buddy;
- PurpleGroup *skype_group = purple_find_group("Skype");
- int ContactCount = MyContactList.size();
- for (int I = 0; I < ContactCount; I++)
- {
- SEString SkypeName;
- MyContactList[I]->GetIdentity(SkypeName);
- SEString Alias = MyContactList[I]->GetProp(Contact::P_DISPLAYNAME);
-
- buddy = purple_find_buddy(this->pa, SkypeName);
- if (buddy == NULL)
- {
- buddy = purple_buddy_new(this->pa, SkypeName, Alias);
- if (skype_group == NULL)
- {
- skype_group = purple_group_new("Skype");
- purple_blist_add_group(skype_group, NULL);
- }
- purple_blist_add_buddy(buddy, NULL, skype_group, NULL);
- }
-
- SEString Availability = MyContactList[I]->GetProp(Contact::P_AVAILABILITY);
- const char *status = skype_contact_status_to_id(Availability.toUInt());
- if (status != NULL)
- purple_prpl_got_user_status(this->pa, (const char *)SkypeName, status, NULL);
- };
- };
-
- if ((prop == Account::P_STATUS) && (value.toUInt() == Account::LOGGED_OUT))
- {
- purple_debug_info("skypekit", "Logout complete.\n");
- purple_connection_error(this->pc, _("\nSkype program closed"));
- };
-};
-
-PurpleXfer *find_skype_xfer(MyTransfer *transfer)
-{
- PurpleXfer *xfer;
- PurpleXferType purpletype;
- SEIntList Keys;
- SEIntDict Values;
- GList *xfers;
-
- Keys.append(Transfer::P_TYPE);
- Keys.append(Transfer::P_STATUS);
- Keys.append(Transfer::P_FILENAME);
- Keys.append(Transfer::P_FILEPATH);
- Keys.append(Transfer::P_FILESIZE);
- Keys.append(Transfer::P_PARTNER_HANDLE);
- Values = transfer->GetProps(Keys);
-
- purpletype = (Values.find(Transfer::P_TYPE).toUInt() == Transfer::INCOMING ? PURPLE_XFER_RECEIVE : PURPLE_XFER_SEND);
-
- if (transfer->xfer != NULL)
- return transfer->xfer;
-
- gulong transfer_filesize = atoul(Values.find(Transfer::P_FILESIZE));
-
- xfers = purple_xfers_get_all();
- for(; xfers; xfers = g_list_next(xfers))
- {
- xfer = (PurpleXfer *)xfers->data;
- if (xfer->type == purpletype &&
- xfer->account == transfer->pa &&
- xfer->size == transfer_filesize &&
- (!xfer->local_filename ||
- g_str_equal(xfer->local_filename, Values.find(Transfer::P_FILEPATH))) &&
- xfer->who && g_str_equal(xfer->who, Values.find(Transfer::P_PARTNER_HANDLE)))
- {
- purple_debug_info("skypekit", "found the xfer we're looking for\n");
- //as best as we can tell, this is the xfer we're looking for
- transfer->xfer = xfer;
- xfer->data = transfer->me();
-
- return xfer;
- }
- }
-
- //Didn't find the xfer, make a new one
- xfer = purple_xfer_new(transfer->pa, purpletype, Values.find(Transfer::P_PARTNER_HANDLE));
-
- if (xfer)
- {
- if (!Values.find(Transfer::P_FILENAME).isEmpty())
- purple_xfer_set_filename(xfer, Values.find(Transfer::P_FILENAME));
- if (!Values.find(Transfer::P_FILEPATH).isEmpty())
- purple_xfer_set_local_filename(xfer, Values.find(Transfer::P_FILEPATH));
- purple_debug_info("skypekit", "filesize %lu\n", transfer_filesize);
- purple_xfer_set_size(xfer, transfer_filesize);
-
- purple_xfer_set_init_fnc(xfer, skype_xfer_init);
- purple_xfer_set_cancel_recv_fnc(xfer, skype_xfer_cancel_recv);
- purple_xfer_set_cancel_send_fnc(xfer, skype_xfer_cancel_send);
-
- xfer->data = transfer->me();
- transfer->xfer = xfer;
-
- purple_xfer_add(xfer);
- purple_debug_info("skypekit", "had to add a new xfer\n");
- }
-
- return xfer;
-}
-
-//called when the user accepts an incomming call from the ui
-static gboolean
-skype_call_accept(Conversation *conversation)
-{
- conversation->JoinLiveSession();
- return FALSE;
-}
-
-//called when the user ends an incomming call from the ui
-static gboolean
-skype_call_end(Conversation *conversation)
-{
- conversation->LeaveLiveSession();
- return FALSE;
-}
-
-static void
-skype_media_state_changed(PurpleMedia *media, PurpleMediaState state, gchar *session_id, gchar *participant, MyConversation *conversation)
-{
- if (state == PURPLE_MEDIA_STATE_END)
- {
- conversation->media = NULL;
- }
-}
-
-static void
-skype_stream_info_changed(PurpleMedia *media, PurpleMediaInfoType type, gchar *session_id, gchar *participant, gboolean local,
- Conversation *conversation)
-{
- if (type == PURPLE_MEDIA_INFO_ACCEPT) {
- skype_call_accept(conversation);
- } else if (type == PURPLE_MEDIA_INFO_HANGUP || type == PURPLE_MEDIA_INFO_REJECT) {
- skype_call_end(conversation);
- }
-}
-
-void
-skype_handle_incoming_call(PurpleConnection *pc, MyConversation::Ref &conversation, const char *who, const char *display_name)
-{
- PurpleAccount *account;
- account = purple_connection_get_account(pc);
- if (purple_media_manager_get())
- {
- PurpleMedia *media;
- media = purple_media_manager_create_media(purple_media_manager_get(), account, "fsrtpconference", who, FALSE);
- if (media != NULL)
- {
- purple_media_set_prpl_data(media, conversation->me());
- conversation->media = media;
-
- purple_media_add_stream(media, "skype-audio1", who, PURPLE_MEDIA_AUDIO, FALSE, "nice", 0, NULL);
- purple_media_add_stream(media, "skype-audio2", who, PURPLE_MEDIA_AUDIO, FALSE, "rawudp", 0, NULL);
- //g_signal_emit(media, purple_media_signals[STATE_CHANGED], 0, PURPLE_MEDIA_STATE_NEW, "skype-audio", who);
- //g_signal_emit_by_name(media, "state-changed", 0, PURPLE_MEDIA_STATE_NEW, "skype-audio", who);
-
- g_signal_connect_swapped(G_OBJECT(media), "accepted", G_CALLBACK(skype_call_accept), conversation->me());
- g_signal_connect(G_OBJECT(media), "state-changed", G_CALLBACK(skype_media_state_changed), conversation->me());
- g_signal_connect(G_OBJECT(media), "stream-info", G_CALLBACK(skype_stream_info_changed), conversation->me());
- } else {
- purple_debug_info("skype_media", "purple_mmcm returned NULL\n");
- }
- } else //if (!purple_media_manager_get())
- {
- gchar *temp = g_strdup_printf(_("%s (%s) is calling you."), display_name, who);
- purple_request_action(conversation->me(), _("Incoming Call"), temp,
- _("Do you want to accept their call?"),
- 0, account, who, NULL, conversation->me(), 2,
- _("_Accept"), G_CALLBACK(skype_call_accept),
- _("_Reject"), G_CALLBACK(skype_call_end));
- g_free(temp);
-
- }
-}
-
-void
-skype_handle_call_got_ended(PurpleConnection *pc, MyConversation::Ref &conversation)
-{
- if (purple_media_manager_get())
- {
- if (conversation->media)
- purple_media_manager_remove_media(purple_media_manager_get(), conversation->media);
- } else //if (!purple_media_manager_get())
- {
- purple_request_close_with_handle(conversation->me());
- }
-}
-
-gboolean
-skype_initiate_media(PurpleAccount *account, const char *who, PurpleMediaSessionType type)
-{
- PurpleMedia *media;
- PurpleConnection *pc = purple_account_get_connection(account);
- Skype *skype = (Skype *)pc->proto_data;
-
- //Use skype's own audio/video stuff for now
- media = purple_media_manager_create_media(purple_media_manager_get(), account, "fsrtpconference", who, TRUE);
- MyConversation::Ref conv = find_conversation(skype, who);
-
- if (media != NULL)
- {
- conv->JoinLiveSession();
- purple_media_set_prpl_data(media, conv->me());
- conv->media = media;
-
- g_signal_connect_swapped(G_OBJECT(media), "accepted", G_CALLBACK(skype_call_accept), conv->me());
- g_signal_connect(G_OBJECT(media), "state-changed", G_CALLBACK(skype_media_state_changed), conv->me());
- g_signal_connect(G_OBJECT(media), "stream-info", G_CALLBACK(skype_stream_info_changed), conv->me());
- } else {
- purple_debug_info("skype_media", "media is NULL\n");
- }
- return TRUE;
-}
-
-PurpleMediaCaps
-skype_get_media_caps(PurpleAccount *account, const char *who)
-{
- PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
- Contact::Ref contact;
- PurpleConnection *pc = purple_account_get_connection(account);
- Skype *skype = (Skype *)pc->proto_data;
- bool hasNoAudioCap, hasVideoCap;
-
- contact = find_contact(skype, who);
- contact->HasCapability(Contact::CAPABILITY_VOICE_EVER, hasNoAudioCap);
- if (!hasNoAudioCap)
- caps = PURPLE_MEDIA_CAPS_AUDIO;
-
- //TODO: Make video work
- //contact->HasCapability(Contact::CAPABILITY_VIDEO, hasVideoCap);
- //if (hasVideoCap)
- // caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
-
- return caps;
-}
-
-typedef struct {
- gpointer me;
- ConversationRef conversation;
- Conversation::LIST_TYPE type;
- bool added;
-} SKOnConversationListChangeStructHelper;
-
-gboolean
-MySkypeOnConversationListChangeTimeout(gpointer data)
-{
- SKOnConversationListChangeStructHelper *helper = (SKOnConversationListChangeStructHelper *)data;
- if (helper)
- {
- MySkype *skype = (MySkype *) helper->me;
- if (skype)
- skype->OnConversationListChangeThreadSafe(helper->conversation, helper->type, helper->added);
- }
- g_free(helper);
- return FALSE;
-}
-
-void MySkype::OnConversationListChange(
- const ConversationRef &conversation,
- const Conversation::LIST_TYPE &type,
- const bool &added)
-{
- SKOnConversationListChangeStructHelper *helper = g_new0(SKOnConversationListChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->conversation = conversation;
- helper->type = type;
- helper->added = added;
- purple_timeout_add(1, MySkypeOnConversationListChangeTimeout, helper);
-}
-
-void MySkype::OnConversationListChangeThreadSafe(
- const ConversationRef &conv,
- const Conversation::LIST_TYPE &type,
- const bool &added)
-{
- MyConversation::Ref conversation = conv;
- if (type == Conversation::LIVE_CONVERSATIONS)
- {
- uint LiveStatus;
- SEIntList Keys;
- SEIntDict Values;
-
- Keys.append(Conversation::P_DISPLAYNAME);
- Keys.append(Conversation::P_LOCAL_LIVESTATUS);
- Values = conversation->GetProps(Keys);
- LiveStatus = Values.find(Conversation::P_LOCAL_LIVESTATUS).toUInt();
-
- if (LiveStatus == Conversation::RINGING_FOR_ME)
- {
- ParticipantRefs CallerList;
- conversation->GetParticipants(CallerList, Conversation::OTHER_CONSUMERS);
- SEString PartList = "";
- for (unsigned I = 0; I < CallerList.size(); I++)
- {
- PartList = PartList + ", " + (const char*)CallerList[I]->GetProp(Participant::P_IDENTITY);
- }
-
- skype_handle_incoming_call(this->pc, conversation, PartList, Values.find(Conversation::P_DISPLAYNAME));
- } else if (LiveStatus == Conversation::NONE)
- {
- skype_handle_call_got_ended(this->pc, conversation);
- }
- }
-}
-
-typedef struct {
- gpointer me;
- Message::Ref message;
- bool changesInboxTimestamp;
- Message::Ref supersedesHistoryMessage;
- Conversation::Ref conversation;
-} SKOnMessageStructHelper;
-
-gboolean
-MySkypeOnMessageTimeout(gpointer data)
-{
- SKOnMessageStructHelper *helper = (SKOnMessageStructHelper *) data;
- if (helper)
- {
- MySkype *skype = (MySkype *) helper->me;
- if (skype)
- skype->OnMessageThreadSafe(helper->message, helper->changesInboxTimestamp, helper->supersedesHistoryMessage, helper->conversation);
- }
- g_free(helper);
- return FALSE;
-}
-void MySkype::OnMessage(const Message::Ref& message, const bool& changesInboxTimestamp,
- const Message::Ref& supersedesHistoryMessage,
- const Conversation::Ref& conversation)
-{
- SKOnMessageStructHelper *helper = g_new0(SKOnMessageStructHelper, 1);
- helper->me = (gpointer) this;
- helper->message = message;
- helper->changesInboxTimestamp = changesInboxTimestamp;
- helper->supersedesHistoryMessage = supersedesHistoryMessage;
- helper->conversation = conversation;
- purple_timeout_add(1, MySkypeOnMessageTimeout, helper);
- return;
-}
-void MySkype::OnMessageThreadSafe(const Message::Ref& message, const bool& changesInboxTimestamp,
- const Message::Ref& supersedesHistoryMessage,
- const Conversation::Ref& conversation)
-{
- SEIntList Keys;
- SEIntDict Values;
- int MessageType = message->GetProp(Message::P_TYPE).toUInt();
- int ConvType = conversation->GetProp(Conversation::P_TYPE).toUInt();
-
- SEStringList DebugStrings = message->getPropDebug(Message::P_TYPE, MessageType);
- purple_debug_info("skypekit", "MessageMsg %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
- DebugStrings = conversation->getPropDebug(Conversation::P_TYPE, ConvType);
- purple_debug_info("skypekit", "MessageConv %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- if (MessageType == Message::POSTED_EMOTE || MessageType == Message::POSTED_TEXT)
- {
- Keys.append(Message::P_AUTHOR);
- Keys.append(Message::P_BODY_XML);
- Keys.append(Message::P_TIMESTAMP);
- Keys.append(Message::P_ORIGINALLY_MEANT_FOR);
- Values = message->GetProps(Keys);
- gchar *message_body;
-
- if (MessageType == Message::POSTED_EMOTE)
- {
- const gchar *tempmsg = Values.find(Message::P_BODY_XML);
- message_body = g_strconcat("/me ", tempmsg, NULL);
- } else {
- message_body = g_strdup(Values.find(Message::P_BODY_XML));
- }
-
- purple_debug_info("skypekit", "Message %s : %s : %s\n", (const char*)Values[0], (const char*)Values[1], (const char*)Values[2]);
-
- if (ConvType == Conversation::DIALOG)
- {
- if (!Values.find(Message::P_AUTHOR).equals(this->pa->username))
- {
- serv_got_im(this->pc, Values.find(Message::P_AUTHOR), message_body,
- PURPLE_MESSAGE_RECV, Values.find(Message::P_TIMESTAMP).toUInt());
- } else {
- //Check that we haven't sent the message from here
- //serv_got_im(this->pc, Values.find(Message::P_ORIGINALLY_MEANT_FOR), message_body,
- // PURPLE_MESSAGE_SEND, Values.find(Message::P_TIMESTAMP).toUInt());
- }
- } else if (ConvType == Conversation::CONFERENCE)
- {
- int ConvId = conversation->getOID();
- serv_got_chat_in(this->pc, ConvId, Values.find(Message::P_AUTHOR), PURPLE_MESSAGE_RECV,
- message_body, Values.find(Message::P_TIMESTAMP).toUInt());
-
- }
- g_free(message_body);
- } else if (MessageType == Message::POSTED_FILES) {
- // someone sending a file
- MyTransfer::Refs transfers;
- if (message->GetTransfers(transfers)) {
- for(guint i = 0; i < transfers.size(); i++) {
- MyTransfer::Ref transfer = transfers[i];
- Keys.append(Transfer::P_TYPE);
- Keys.append(Transfer::P_STATUS);
- Keys.append(Transfer::P_FILENAME);
- Keys.append(Transfer::P_FILESIZE);
- Keys.append(Transfer::P_PARTNER_HANDLE);
- Values = transfer->GetProps(Keys);
- if (Values.find(Transfer::P_STATUS).toUInt() < Transfer::TRANSFERRING)
- {
- if (Values.find(Transfer::P_TYPE).toUInt() == Transfer::INCOMING) {
- purple_debug_info("skypekit", "New incoming file\n");
- PurpleXfer *xfer = purple_xfer_new(this->pa, PURPLE_XFER_RECEIVE, Values.find(Transfer::P_PARTNER_HANDLE));
- if (xfer)
- {
- gulong filesize = atoul(Values.find(Transfer::P_FILESIZE));
- purple_xfer_set_init_fnc(xfer, skype_xfer_init);
- purple_xfer_set_request_denied_fnc(xfer, skype_xfer_request_denied);
- purple_xfer_set_filename(xfer, Values.find(Transfer::P_FILENAME));
- purple_debug_info("skypekit", "filesize %lu\n", filesize);
- purple_xfer_set_size(xfer, filesize);
-
- xfer->data = transfer->me();
- transfer->xfer = xfer;
-
- purple_xfer_request(xfer);
- }
- } else if (Values.find(Transfer::P_TYPE).toUInt() == Transfer::OUTGOING) {
- if (!transfer->xfer)
- {
- purple_debug_info("skypekit", "no PurpleXfer for this transfer\n");
- //find the current transfer, or create one if we cant find it
- transfer->xfer = find_skype_xfer(transfer->me());
- }
- }
- }
- }
- }
- } else if (MessageType == Message::SPAWNED_CONFERENCE) {
- //Turned this im into a chat
- // see MyConversation::OnSpawnConference()
- } else if (MessageType == Message::ADDED_CONSUMERS) {
- //People added to this chat
- int ConvId = conversation->getOID();
- PurpleConversation *conv = purple_find_chat(this->pc, ConvId);
- Keys.append(Message::P_IDENTITIES);
- Values = message->GetProps(Keys);
- purple_debug_info("skypekit", "added users %s to chat %d\n", (const char *)Values.find(Message::P_IDENTITIES), ConvId);
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(conv), Values.find(Message::P_IDENTITIES), NULL, PURPLE_CBFLAGS_NONE, TRUE);
- } else if (MessageType == Message::RETIRED_OTHERS) {
- // Other user was kicked
- int ConvId = conversation->getOID();
- PurpleConversation *conv = purple_find_chat(this->pc, ConvId);
- Keys.append(Message::P_IDENTITIES);
- Keys.append(Message::P_LEAVEREASON);
- Keys.append(Message::P_REASON);
- Values = message->GetProps(Keys);
- purple_debug_info("skypekit", "removed users %s from chat %d\n", (const char *)Values.find(Message::P_IDENTITIES), ConvId);
- purple_conv_chat_remove_user(PURPLE_CONV_CHAT(conv), Values.find(Message::P_IDENTITIES), Values.find(Message::P_REASON));
- } else if (MessageType == Message::RETIRED) {
- // User left conversation
- int ConvId = conversation->getOID();
- serv_got_chat_left(this->pc, ConvId);
- }
-
- //Mark all messages as read/consumed
- conversation->SetConsumedHorizon(time(NULL));
-}
-
-gboolean
-MyConversationOnSpawnConferenceTimeout(gpointer data)
-{
- MyConversation *conv = (MyConversation *) data;
- conv->OnSpawnConferenceThreadSafe(conv->ref());
- return FALSE;
-}
-void MyConversation::OnSpawnConference(const ConversationRef& spawned)
-{
- MyConversation::Ref conv = spawned;
- purple_timeout_add(1, MyConversationOnSpawnConferenceTimeout, conv->me());
-}
-//ignore the 'this' keyword here, TODO fix the timeout call
-void MyConversation::OnSpawnConferenceThreadSafe(const ConversationRef& spawned)
-{
- SEIntList Keys;
- SEIntDict Values;
- MyConversation::Ref conversation = spawned;
- int ConvId = conversation->getOID();
-
- Keys.append(Conversation::P_IDENTITY);
- Keys.append(Conversation::P_DISPLAYNAME);
- Values = conversation->GetProps(Keys);
-
- purple_debug_info("skypekit", "joined chat %s %d\n", (const char *)Values.find(Conversation::P_IDENTITY), ConvId);
- PurpleConversation *conv = serv_got_joined_chat(this->pc, ConvId, Values.find(Conversation::P_IDENTITY));
- purple_conv_chat_set_topic(PURPLE_CONV_CHAT(conv), NULL, Values.find(Conversation::P_DISPLAYNAME));
-
- ParticipantRefs participants;
- conversation->GetParticipants(participants);
- ParticipantRef participant;
- while((participant = participants.peek()))
- {
- SEString who;
- participant->GetPropIdentity(who);
- purple_debug_info("skypekit", "adding user %s to chat %d\n", (const char *) who, ConvId);
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(conv), who, NULL, PURPLE_CBFLAGS_NONE, FALSE);
- }
-}
-
-gboolean
-MyConversationOnChangeTimeout(gpointer data)
-{
- SKOnChangeStructHelper *helper = (SKOnChangeStructHelper *) data;
- MyConversation *conversation = (MyConversation *) helper->me;
- int prop = (int) helper->prop;
- conversation->OnChangeThreadSafe(prop, helper->value);
- g_free(helper);
- return FALSE;
-}
-void MyConversation::OnChange(int prop)
-{
- SKOnChangeStructHelper *helper = g_new0(SKOnChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->prop = prop;
- helper->value = this->GetProp(prop);
-
- SEStringList DebugStrings = this->getPropDebug(prop, helper->value);
- purple_debug_info("skypekit", "Conversation %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- purple_timeout_add(1, MyConversationOnChangeTimeout, helper);
- return;
-}
-void MyConversation::OnChangeThreadSafe(int prop, const SEString &value)
-{
-}
-
-gboolean
-MyMessageOnChangeTimeout(gpointer data)
-{
- SKOnChangeStructHelper *helper = (SKOnChangeStructHelper *) data;
- MyMessage *message = (MyMessage *) helper->me;
- int prop = (int) helper->prop;
- message->OnChangeThreadSafe(prop, helper->value);
- g_free(helper);
- return FALSE;
-}
-void MyMessage::OnChange(int prop)
-{
- SKOnChangeStructHelper *helper = g_new0(SKOnChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->prop = prop;
- helper->value = this->GetProp(prop);
-
- SEStringList DebugStrings = this->getPropDebug(prop, helper->value);
- purple_debug_info("skypekit", "Message %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- purple_timeout_add(1, MyMessageOnChangeTimeout, helper);
- return;
-}
-void MyMessage::OnChangeThreadSafe(int prop, const SEString &value)
-{
- SEIntList Keys;
- SEIntDict Values;
- Keys.append(Message::P_ORIGINALLY_MEANT_FOR);
- Keys.append(Message::P_BODY_XML);
- Keys.append(Message::P_CONVO_ID);
- int MsgId = this->getOID();
-
- if (prop == Message::P_SENDING_STATUS)
- {
- Values = this->GetProps(Keys);
-
- const gchar *tempmsg = Values.find(Message::P_BODY_XML);
- const gchar *otherperson = Values.find(Message::P_ORIGINALLY_MEANT_FOR);
- gchar *message_number = g_strdup_printf("%du", MsgId);
-
- if (value.toUInt() == Message::SENT)
- {
- purple_signal_emit(purple_conversations_get_handle(), "received-im-ack",
- this->pa, otherperson, message_number);
- } else if (value.toUInt() == Message::SENDING)
- {
- purple_signal_emit(purple_conversations_get_handle(), "waiting-im-ack",
- this->pa, otherperson, tempmsg, message_number);
- }
-
- g_free(message_number);
- }
-}
-
-gboolean
-MyParticipantOnChangeTimeout(gpointer data)
-{
- SKOnChangeStructHelper *helper = (SKOnChangeStructHelper *) data;
- MyParticipant *participant = (MyParticipant *) helper->me;
- int prop = (int) helper->prop;
- participant->OnChangeThreadSafe(prop, helper->value);
- g_free(helper);
- return FALSE;
-}
-void MyParticipant::OnChange(int prop)
-{
- SKOnChangeStructHelper *helper = g_new0(SKOnChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->prop = prop;
- helper->value = this->GetProp(prop);
-
- SEStringList DebugStrings = this->getPropDebug(prop, helper->value);
- purple_debug_info("skypekit", "Participant %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- purple_timeout_add(1, MyParticipantOnChangeTimeout, helper);
- return;
-}
-void MyParticipant::OnChangeThreadSafe(int prop, const SEString &value)
-{
- if (prop == Participant::P_TEXT_STATUS)
- {
- // typing notifications
- int TextStatus = value.toUInt();
- PurpleTypingState typingState;
- switch(TextStatus)
- {
- default:
- case Participant::TEXT_NA:
- typingState = PURPLE_NOT_TYPING;
- break;
- case Participant::READING:
- typingState = PURPLE_TYPED;
- break;
- case Participant::WRITING:
- case Participant::WRITING_AS_ANGRY:
- case Participant::WRITING_AS_CAT:
- typingState = PURPLE_TYPING;
- break;
- }
-
- SEString Name = this->GetProp(Participant::P_IDENTITY);
- purple_debug_info("skypekit", "Got typing notification from %s\n", (const char *) Name);
- serv_got_typing(this->pc, (const char *)Name, 10, typingState);
- }
-}
-
-gboolean
-MyTransferOnChangeTimeout(gpointer data)
-{
- SKOnChangeStructHelper *helper = (SKOnChangeStructHelper *) data;
- MyTransfer *transfer = (MyTransfer *) helper->me;
- int prop = (int) helper->prop;
- transfer->OnChangeThreadSafe(prop, helper->value);
- g_free(helper);
- return FALSE;
-}
-void MyTransfer::OnChange(int prop)
-{
- SKOnChangeStructHelper *helper = g_new0(SKOnChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->prop = prop;
- helper->value = this->GetProp(prop);
-
- SEStringList DebugStrings = this->getPropDebug(prop, helper->value);
- purple_debug_info("skypekit", "Transfer %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- purple_timeout_add(1, MyTransferOnChangeTimeout, helper);
- return;
-}
-void MyTransfer::OnChangeThreadSafe(int prop, const SEString &value)
-{
- if (this->xfer == NULL)
- {
- this->xfer = find_skype_xfer(this);
- }
-
- if (this->xfer != NULL)
- {
- if(prop == Transfer::P_STATUS)
- {
- switch(value.toUInt())
- {
- case Transfer::NEW:
- case Transfer::WAITING_FOR_ACCEPT:
- purple_xfer_set_status(this->xfer, PURPLE_XFER_STATUS_NOT_STARTED);
- break;
- case Transfer::CONNECTING:
- purple_xfer_set_status(this->xfer, PURPLE_XFER_STATUS_ACCEPTED);
- break;
- case Transfer::TRANSFERRING:
- case Transfer::TRANSFERRING_OVER_RELAY:
- purple_xfer_set_status(this->xfer, PURPLE_XFER_STATUS_STARTED);
- break;
- case Transfer::COMPLETED:
- purple_xfer_set_completed(this->xfer, TRUE);
- break;
- case Transfer::CANCELLED_BY_REMOTE:
- purple_xfer_cancel_remote(this->xfer);
- break;
- case Transfer::CANCELLED:
- purple_xfer_cancel_local(this->xfer);
- break;
- case Transfer::FAILED:
- purple_xfer_error(this->xfer->type, this->pa, this->xfer->who, "Transfer failed");
- break;
- case Transfer::PAUSED:
- case Transfer::REMOTELY_PAUSED:
- case Transfer::PLACEHOLDER:
- case Transfer::OFFER_FROM_OTHER_INSTANCE:
- default:
- break;
- }
- purple_xfer_update_progress(this->xfer);
- } else if (prop == Transfer::P_BYTESTRANSFERRED)
- {
- if (purple_xfer_get_status(this->xfer) < PURPLE_XFER_STATUS_STARTED)
- purple_xfer_set_status(this->xfer, PURPLE_XFER_STATUS_STARTED);
- purple_xfer_set_bytes_sent(this->xfer, atol(value));
- purple_xfer_update_progress(this->xfer);
- }
- }
-}
-
-void
-skypekit_auth_allow(gpointer userdata)
-{
- ContactRef contact = * (ContactRef *)userdata;
- contact->SetBuddyStatus(true);
-}
-void
-skypekit_auth_deny(gpointer userdata)
-{
- ContactRef contact = * (ContactRef *)userdata;
- contact->SetBlocked(true);
-}
-
-static void
-skype_call_user_from_blist(PurpleBlistNode *node, Conversation *conv)
-{
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- conv->JoinLiveSession();
- }
-}
-static void
-skype_hangup_from_blist(PurpleBlistNode *node, Conversation *conv)
-{
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- conv->LeaveLiveSession();
- }
-}
-
-static void
-skype_request_auth_from_blist(PurpleBlistNode *node, gpointer data)
-{
- PurpleBuddy *buddy;
-
- if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
- return;
-
- buddy = (PurpleBuddy *)node;
-
- PurpleConnection *pc = purple_account_get_connection(buddy->account);
- Skype *skype = (Skype *)pc->proto_data;
- Contact::Ref contact = find_contact(skype, buddy->name);
-
- contact->SendAuthRequest("");
-}
-
-static GList *
-skype_node_menu(PurpleBlistNode *node)
-{
- GList *m = NULL;
- PurpleMenuAction *act;
-
- if(PURPLE_BLIST_NODE_IS_BUDDY(node))
- {
- PurpleBuddy *buddy = (PurpleBuddy *)node;
- PurpleConnection *pc = purple_account_get_connection(buddy->account);
- Skype *skype = (Skype *)pc->proto_data;
-
- if (!purple_media_manager_get())
- {
- MyConversation::Ref conv = find_conversation(skype, buddy->name);
- Conversation::LOCAL_LIVESTATUS liveStatus;
- conv->GetPropLocalLivestatus(liveStatus);
-
- if (liveStatus == Conversation::NONE ||
- liveStatus == Conversation::OTHERS_ARE_LIVE ||
- liveStatus == Conversation::RECENTLY_LIVE)
- {
- act = purple_menu_action_new(_("Call..."),
- PURPLE_CALLBACK(skype_call_user_from_blist),
- conv->me(), NULL);
- m = g_list_append(m, act);
- } else if (liveStatus != Conversation::OTHERS_ARE_LIVE_FULL)
- {
- act = purple_menu_action_new(_("End Call..."),
- PURPLE_CALLBACK(skype_hangup_from_blist),
- conv->me(), NULL);
- m = g_list_append(m, act);
-
- }
- }
-
- if (!PURPLE_BUDDY_IS_ONLINE(buddy))
- {
- Contact::Ref contact = find_contact(skype, buddy->name);
- Contact::AVAILABILITY avail;
- contact->GetPropAvailability(avail);
-
- if (avail == Contact::PENDINGAUTH)
- {
- act = purple_menu_action_new(_("Re-request authorization"),
- PURPLE_CALLBACK(skype_request_auth_from_blist),
- NULL, NULL);
- m = g_list_append(m, act);
- }
- }
- }
-
- return m;
-}
-
-
-typedef struct {
- gpointer me;
- ContactRef contact;
-} SKOnContactGroupChangeStructHelper;
-gboolean
-MyContactGroupOnChangeTimeout(gpointer data)
-{
- SKOnContactGroupChangeStructHelper *helper = (SKOnContactGroupChangeStructHelper *) data;
- MyContactGroup *contactgroup = (MyContactGroup *) helper->me;
- contactgroup->OnChangeThreadSafe(helper->contact);
- g_free(helper);
- return FALSE;
-}
-void MyContactGroup::OnChange(const ContactRef& contact)
-{
- SKOnContactGroupChangeStructHelper *helper = g_new0(SKOnContactGroupChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->contact = contact;
- purple_timeout_add(1, MyContactGroupOnChangeTimeout, helper);
- return;
-}
-void MyContactGroup::OnChangeThreadSafe(const ContactRef& contact)
-{
- purple_debug_info("skypekit", "ContactGroup::OnChange\n");
-
- TYPE type;
- this->GetPropType(type);
- if (type == ContactGroup::CONTACTS_WAITING_MY_AUTHORIZATION)
- {
- SEString ContactSkypeName;
- SEString ContactDisplayName;
- SEString AuthRequestText;
- contact->GetPropSkypename(ContactSkypeName);
- contact->GetPropReceivedAuthrequest(AuthRequestText);
- contact->GetPropDisplayname(ContactDisplayName);
-
- purple_account_request_authorization(this->pa, ContactSkypeName, NULL, ContactDisplayName,
- AuthRequestText, FALSE, skypekit_auth_allow, skypekit_auth_deny,
- &(contact->ref()));
-
- //contact->IgnoreAuthRequest();
- }
-}
-
-gboolean
-MyContactOnChangeTimeout(gpointer data)
-{
- SKOnChangeStructHelper *helper = (SKOnChangeStructHelper *) data;
- MyContact *contact = (MyContact *) helper->me;
- int prop = (int) helper->prop;
- contact->OnChangeThreadSafe(prop, helper->value);
- g_free(helper);
- return FALSE;
-}
-void MyContact::OnChange(int prop)
-{
- SKOnChangeStructHelper *helper = g_new0(SKOnChangeStructHelper, 1);
- helper->me = (gpointer) this;
- helper->prop = prop;
- helper->value = this->GetProp(prop);
-
- SEStringList DebugStrings = this->getPropDebug(prop, helper->value);
- purple_debug_info("skypekit", "Contact %s %s\n", (const char *)DebugStrings[1], (const char *)DebugStrings[2]);
-
- purple_timeout_add(1, MyContactOnChangeTimeout, helper);
- return;
-}
-
-void
-skype_auth_allow(gpointer pointer)
-{
- Contact *contact = (Contact *)pointer;
- //contact->GiveAuthlevel(Contact::AUTHORIZED_BY_ME);
- contact->SetBuddyStatus(true);
-}
-
-void
-skype_auth_deny(gpointer pointer)
-{
- Contact *contact = (Contact *)pointer;
- //contact->GiveAuthlevel(Contact::BLOCKED_BY_ME);
- contact->SetBlocked(true);
-}
-
-void MyContact::OnChangeThreadSafe(int prop, const SEString &value)
-{
- SEString Name;
- if (prop == Contact::P_AVAILABILITY)
- {
- this->GetIdentity(Name);
-// SEStringList DebugStrings = this->getPropDebug(prop, value);
-// purple_debug_info("skypekit", "User %s is %s\n", (const char *)Name, (const char *)DebugStrings[2]);
- const char *status;
-
- status = skype_contact_status_to_id(value.toUInt());
- if (status != NULL)
- purple_prpl_got_user_status(this->pa, (const char *)Name, status, NULL);
- } else if (prop == Contact::P_AVATAR_IMAGE)
- {
- bool hasAvatar = false;
- Sid::Binary avatarData;
- this->GetIdentity(Name);
- this->GetAvatar(hasAvatar, avatarData);
- if (hasAvatar)
- {
- purple_buddy_icons_set_for_user(this->pa, (const char *)Name, (char *)avatarData, avatarData.size(), NULL);
- } else {
- purple_buddy_icons_set_for_user(this->pa, (const char *)Name, NULL, 0, NULL);
- }
- } else if (prop == Contact::P_MOOD_TEXT)
- {
- //moodString = new SEString(value);
- } else if (prop == Contact::P_RECEIVED_AUTHREQUEST)
- {
- SEString DisplayName;
- this->GetPropDisplayname(DisplayName);
- this->GetIdentity(Name);
-
- if (purple_account_get_bool(this->pa, "reject_all_auths", FALSE))
- {
- skype_auth_deny(this->me());
- } else {
- purple_account_request_authorization(this->pa, (const char *)Name, NULL, (const char *)DisplayName,
- value, (purple_find_buddy(this->pa, (const char *)Name) != NULL),
- skype_auth_allow, skype_auth_deny, this->me());
- }
- }
-};
-
diff --git a/libskypekit/libskypekit.h b/libskypekit/libskypekit.h
deleted file mode 100644
index c968c6c..0000000
--- a/libskypekit/libskypekit.h
+++ /dev/null
@@ -1,361 +0,0 @@
-
-#include "prpl.h"
-#include "blist.h"
-#include "account.h"
-#include "accountopt.h"
-#include "connection.h"
-#include "server.h"
-
-#include "mediamanager.h"
-#include "request.h"
-
-#include <glib.h>
-
-#define SKYPE_APP_TOKEN "AAAgBobH4q2OPAaCX6vWseC82MmHZ1Cpayj61rbYlh0uenHxFByJ/lLu9HSN5nT3TjS91/2RQMASlCmZUCM5zINkR3nQ1240JpB0yNfYfzxXm8EyE9p9gWAGU7spUMvuROxoQR0042VUR4dCRW/kYr3yeYiYOXW0poxxwg+esEbX8W1tqing25kfjUVsij6+T+dxtV8t/B1yGpTiT1okj9FoBvZgnwDoEGEywG5xeJTGLuFtHGALqa7gwvj9rulf7TuM1Q=="
-
-#define GETTEXT_PACKAGE "skype4pidgin"
-#ifdef ENABLE_NLS
-# ifdef _WIN32
-# include <win32dep.h>
-# endif
-# include <glib/gi18n-lib.h>
-#else
-# define _(a) a
-#endif
-
-#include "debug.h"
-
-#include "skype-embedded_2.h"
-#include "skype-tcp-transport.h"
-
-
-#define atoul(x) strtoul(x, (char **)NULL, 10)
-
-
-class MyAccount : public Account
-{
-public:
- typedef DRef<MyAccount, Account> Ref;
- MyAccount(unsigned int oid, SERootObject* root);
- ~MyAccount() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
-
- void OnChange(int prop);
- void OnChangeThreadSafe(int prop, const SEString& value);
-};
-
-MyAccount::MyAccount(unsigned int oid, SERootObject* root) : Account(oid, root) {};
-
-
-class MyContact : public Contact
-{
-public:
- typedef DRef<MyContact, Contact> Ref;
- MyContact(unsigned int oid, SERootObject* root);
- ~MyContact() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
- MyContact *me() {return this;}
- SEString moodString;
-
- void OnChange(int prop);
- void OnChangeThreadSafe(int prop, const SEString& value);
-};
-
-MyContact::MyContact(unsigned int oid, SERootObject* root) : Contact(oid, root) {};
-
-class MyContactGroup : public ContactGroup
-{
-public:
- typedef DRef<MyContactGroup, ContactGroup> Ref;
- MyContactGroup(unsigned int oid, SERootObject* root);
- ~MyContactGroup() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
-
- void OnChange(const ContactRef& contact);
- void OnChangeThreadSafe(const ContactRef& contact);
-};
-
-MyContactGroup::MyContactGroup(unsigned int oid, SERootObject* root) : ContactGroup(oid, root) {};
-
-class MyParticipant : public Participant
-{
-public:
- typedef DRef<MyParticipant, Participant> Ref;
- MyParticipant(unsigned int oid, SERootObject* root);
- ~MyParticipant() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
-
- void OnChange(int prop);
- void OnChangeThreadSafe(int prop, const SEString& value);
-};
-
-MyParticipant::MyParticipant(unsigned int oid, SERootObject* root) : Participant(oid, root) {};
-
-class MyTransfer : public Transfer
-{
-public:
- typedef DRef<MyTransfer, Transfer> Ref;
- MyTransfer(unsigned int oid, SERootObject* root);
- ~MyTransfer() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
- PurpleXfer *xfer;
-
- MyTransfer *me() {return this;}
-
- void OnChange(int prop);
- void OnChangeThreadSafe(int prop, const SEString& value);
-};
-
-MyTransfer::MyTransfer(unsigned int oid, SERootObject* root) : Transfer(oid, root) {};
-
-class MyConversation : public Conversation
-{
-public:
- typedef DRef<MyConversation, Conversation> Ref;
- MyConversation(unsigned int oid, SERootObject* root);
- ~MyConversation() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
- PurpleMedia *media;
-
- MyConversation *me() {return this;}
-
- void OnChange(int prop);
- void OnChangeThreadSafe(int prop, const SEString& value);
- void OnSpawnConference(const ConversationRef& spawned);
- void OnSpawnConferenceThreadSafe(const ConversationRef& spawned);
-};
-
-MyConversation::MyConversation(unsigned int oid, SERootObject* root) : Conversation(oid, root) {};
-
-class MyMessage : public Message
-{
-public:
- typedef DRef<MyMessage, Message> Ref;
- MyMessage(unsigned int oid, SERootObject* root);
- ~MyMessage() {};
- PurpleAccount *pa;
- PurpleConnection *pc;
-
- void OnChange(int prop);
- void OnChangeThreadSafe(int prop, const SEString& value);
-};
-
-MyMessage::MyMessage(unsigned int oid, SERootObject* root) : Message(oid, root) {};
-
-class MySkype : public Skype
-{
-public:
- MySkype(SETransport* transport) : Skype(transport) {}
- ~MySkype() {}
- PurpleConnection *pc;
- PurpleAccount *pa;
-
- // Every time an account object is created, we will return instance of MyAccount
- Account* newAccount(int oid) {MyAccount *acc = new MyAccount(oid, this); acc->pc=this->pc; acc->pa=this->pa; return acc;}
- Contact* newContact(int oid) {MyContact *con = new MyContact(oid, this); con->pc=this->pc; con->pa=this->pa; return con;}
- ContactGroup* newContactGroup(int oid) {MyContactGroup *grp = new MyContactGroup(oid, this); grp->pc=this->pc; grp->pa=this->pa; return grp;}
- Participant* newParticipant(int oid) {MyParticipant *par = new MyParticipant(oid, this); par->pc=this->pc; par->pa=this->pa; return par;}
- Transfer* newTransfer(int oid) {MyTransfer *tra = new MyTransfer(oid, this); tra->xfer=NULL; tra->pc=this->pc; tra->pa=this->pa; return tra;}
- Conversation* newConversation(int oid) {MyConversation *con = new MyConversation(oid, this); con->pc=this->pc; con->pa=this->pa; return con;}
- Message* newMessage(int oid) {MyMessage *msg = new MyMessage(oid, this); msg->pc=this->pc; msg->pa=this->pa; return msg;}
-
- virtual void OnMessage(
- const Message::Ref& message,
- const bool& changesInboxTimestamp,
- const Message::Ref& supersedesHistoryMessage,
- const Conversation::Ref& conversation);
- virtual void OnMessageThreadSafe(
- const Message::Ref& message,
- const bool& changesInboxTimestamp,
- const Message::Ref& supersedesHistoryMessage,
- const Conversation::Ref& conversation);
-
- virtual void OnConversationListChange(
- const ConversationRef &conversation,
- const Conversation::LIST_TYPE &type,
- const bool &added);
- virtual void OnConversationListChangeThreadSafe(
- const ConversationRef &conversation,
- const Conversation::LIST_TYPE &type,
- const bool &added);
-};
-
-extern "C" {
-
- const char *skype_list_icon(PurpleAccount *account, PurpleBuddy *buddy);
- GList *skype_status_types(PurpleAccount *acct);
- void skype_login(PurpleAccount *acct);
- void skype_close(PurpleConnection *gc);
- int skype_send_im(PurpleConnection *gc, const gchar *who, const gchar *message, PurpleMessageFlags flags);
- void skype_set_status(PurpleAccount *account, PurpleStatus *status);
- unsigned int skype_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState state);
- void skype_add_deny(PurpleConnection *gc, const char *who);
- void skype_rem_deny(PurpleConnection *gc, const char *who);
- char *skype_status_text(PurpleBuddy *buddy);
- void skype_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
- void skype_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
- void skype_add_permit(PurpleConnection *gc, const char *who);
- void skype_rem_permit(PurpleConnection *gc, const char *who);
- const char *skype_list_emblem(PurpleBuddy *buddy);
- void skype_alias_buddy(PurpleConnection *gc, const char *who, const char *alias);
- void skype_send_file(PurpleConnection *, const char *who, const char *filename);
- gboolean skype_offline_msg(const PurpleBuddy *buddy);
- gboolean skype_can_receive_file(PurpleConnection *pc, const char *who);
- PurpleXfer *skype_xfer_new(PurpleConnection *pc, const char *who);
- void skype_alias_buddy(PurpleConnection *pc, const char *who, const char *alias);
- void skype_set_buddy_icon(PurpleConnection *pc, PurpleStoredImage *img);
- gboolean skype_initiate_media(PurpleAccount *account, const char *who, PurpleMediaSessionType type);
- PurpleMediaCaps skype_get_media_caps(PurpleAccount *account, const char *who);
- static GList *skype_node_menu(PurpleBlistNode *node);
- void skype_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *userinfo, gboolean full);
- int skype_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags);
- const char *skype_normalize(const PurpleAccount *acct, const char *who);
- void skype_set_chat_topic(PurpleConnection *gc, int id, const char *topic);
- void skype_get_info(PurpleConnection *gc, const gchar *username);
-
- PurplePluginProtocolInfo prpl_info = {
- /* options */
- (PurpleProtocolOptions) (OPT_PROTO_CHAT_TOPIC | OPT_PROTO_USE_POINTSIZE),
- NULL, /* user_splits */
- NULL, /* protocol_options */
- {"jpeg", 0, 0, 256, 256, 0, PURPLE_ICON_SCALE_SEND}, /* icon_spec */
- skype_list_icon, /* list_icon */
- skype_list_emblem, /* list_emblem */
- skype_status_text, /* status_text */
- skype_tooltip_text, /* tooltip_text */
- skype_status_types, /* status_types */
- skype_node_menu, /* blist_node_menu */
- NULL,/* chat_info */
- NULL,/* chat_info_defaults */
- skype_login, /* login */
- skype_close, /* close */
- skype_send_im, /* send_im */
- NULL, /* set_info */
- skype_send_typing, /* send_typing */
- skype_get_info, /* get_info */
- skype_set_status, /* set_status */
- NULL, /* set_idle */
- NULL, /* change_passwd */
- skype_add_buddy, /* add_buddy */
- NULL, /* add_buddies */
- skype_remove_buddy, /* remove_buddy */
- NULL, /* remove_buddies */
- skype_add_permit, /* add_permit */
- skype_add_deny, /* add_deny */
- skype_rem_permit, /* rem_permit */
- skype_rem_deny, /* rem_deny */
- NULL, /* set_permit_deny */
- NULL, /* join_chat */
- NULL, /* reject chat invite */
- NULL, /* get_chat_name */
- NULL, /* chat_invite */
- NULL, /* chat_leave */
- NULL, /* chat_whisper */
- skype_chat_send, /* chat_send */
- NULL, /* keepalive */
- NULL, /* register_user */
- NULL, /* get_cb_info */
- NULL, /* get_cb_away */
- skype_alias_buddy, /* alias_buddy */
- NULL, /* group_buddy */
- NULL, /* rename_group */
- NULL, /* buddy_free */
- NULL, /* convo_closed */
- skype_normalize, /* normalize */
- skype_set_buddy_icon,/* set_buddy_icon */
- NULL, /* remove_group */
- NULL, /* get_cb_real_name */
- skype_set_chat_topic,/* set_chat_topic */
- NULL, /* find_blist_chat */
- NULL, /* roomlist_get_list */
- NULL, /* roomlist_cancel */
- NULL, /* roomlist_expand_category */
- skype_can_receive_file, /* can_receive_file */
- skype_send_file, /* send_file */
- skype_xfer_new, /* new_xfer */
- skype_offline_msg, /* offline_message */
- NULL, /* whiteboard_prpl_ops */
- NULL, /* send_raw */
- NULL, /* roomlist_room_serialize */
- NULL, /* unregister_user */
- NULL, /* send_attention */
- NULL, /* attention_types */
-#if PURPLE_MAJOR_VERSION == 2 && PURPLE_MINOR_VERSION == 1
- (gpointer)
-#endif
- sizeof(PurplePluginProtocolInfo), /* struct_size */
- NULL, /* get_account_text_table */
- skype_initiate_media,/* initiate_media */
- skype_get_media_caps /* can_do_media */
- };
-
- gboolean
- plugin_load(PurplePlugin *plugin)
- {
- return TRUE;
- }
-
- gboolean
- plugin_unload(PurplePlugin *plugin)
- {
- return TRUE;
- }
-
- static PurplePluginInfo info = {
- PURPLE_PLUGIN_MAGIC,
- /* PURPLE_MAJOR_VERSION,
- PURPLE_MINOR_VERSION,
- */
- 2, 1,
- PURPLE_PLUGIN_PROTOCOL, /* type */
- NULL, /* ui_requirement */
- 0, /* flags */
- NULL, /* dependencies */
- PURPLE_PRIORITY_DEFAULT, /* priority */
- "prpl-bigbrownchunx-skypekit", /* id */
- "SkypeKit", /* name */
- "0.1", /* version */
- "Allows using Skype IM functions from within Pidgin", /* summary */
- "Allows using Skype IM functions from within Pidgin", /* description */
- "Eion Robb <eion@robbmob.com>", /* author */
- "http://eion.robbmob.com/", /* homepage */
- plugin_load, /* load */
- plugin_unload, /* unload */
- NULL, /* destroy */
- NULL, /* ui_info */
- &prpl_info, /* extra_info */
- NULL, /* prefs_info */
- NULL, /* actions */
- NULL, /* padding */
- NULL,
- NULL,
- NULL
- };
-
- static void
- plugin_init(PurplePlugin *plugin)
- {
- PurpleAccountOption *option;
-
- #if _WIN32 && ENABLE_NLS
- bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- #endif
-
- //if (!g_thread_supported ())
- //g_thread_init (NULL);
-
- option = purple_account_option_string_new(_("Server"), "host", "127.0.0.1");
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- option = purple_account_option_int_new(_("Port"), "port", 8963);
- prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
- }
-
- PURPLE_INIT_PLUGIN(skypekit, plugin_init, info);
-};
diff --git a/po/cs.po b/po/cs.po
deleted file mode 100644
index 9e47fd2..0000000
--- a/po/cs.po
+++ /dev/null
@@ -1,234 +0,0 @@
-# Czech translation of skype4pidgin plugin
-# Translated by Ondřej Vodáček
-# Ondřej Vodáček, 2010.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: skype4pidgin\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2010-03-07 20:28+0100\n"
-"Last-Translator: Ondřej Vodáček <ondra.vodacek@email.cz>\n"
-"MIME-Version: 1.0\n"
-"Language-Team: Czech\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Pro stažení existuje novější verze Skype pluginu"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Pro stažení existuje novější verze programu Skype"
-
-msgid "No updates found"
-msgstr "Žádné aktualizace nebyly nalezeny"
-
-msgid "You have the latest version of Skype"
-msgstr "Máte nejnovější verzi programu Skype."
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Máte nejnovější verzi Skype pluginu.."
-
-msgid "Your version:"
-msgstr "Vaše verze:"
-
-msgid "Latest version:"
-msgstr "Poslední verze:"
-
-msgid "Download from:"
-msgstr "Stáhnout z:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "Dostupný Skype kredit:"
-
-msgid "Skype Balance"
-msgstr "Skype kredit"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Ukazuj SkypeOut kontakty 'Online'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Přepni Skype online/offline při změně online/offline"
-
-msgid "Automatically check for updates"
-msgstr "Automaticky kontrolovat aktualizace"
-
-msgid "Auto-start Skype if not running"
-msgstr "Automaticky spustit Skype pokud neběží"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Nepřítomen při hlasové schránce"
-
-msgid "Offline with Call Forwarding"
-msgstr "Nepřítomen při přesměrování hovorů"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Je povolen pouze jeden Skype účet"
-
-msgid "Skype not responding"
-msgstr "Skype neodpovídá"
-
-msgid ""
-"Could not connect to Skype process.\n"
-"Skype not running?"
-msgstr ""
-"Nepodařilo se připojit ke Skype procesu.\n"
-"Je Skype spuštěn?"
-
-msgid "Skype client not ready"
-msgstr "Skype klient není připraven"
-
-msgid "Connected to Skype"
-msgstr "Připojen ke Skypu"
-
-msgid "Skype program closed"
-msgstr "Skype program byl ukončen"
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Zadejte telefonní číslo nebo Skype jméno kamaráda, kterému chcete volat"
-
-msgid "%s is calling you."
-msgstr "%s vám volá."
-
-msgid "Do you want to accept their call?"
-msgstr "Chcete přijmout jejich hovor?"
-
-# Buddy information
-msgid "Last online"
-msgstr "Naposledy viděn(a)"
-
-msgid "Number of buddies"
-msgstr "Počet kontaktů"
-
-msgid "Is Video Capable"
-msgstr "Umí video"
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr "Schovat Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Zkontrolovat aktualizace Skypu"
-
-msgid "Check for plugin updates..."
-msgstr "Zkontrolovat aktualizace pluginu"
-
-msgid "Search for buddies..."
-msgstr "Vyhledat kamarády"
-
-msgid "Check Skype balance..."
-msgstr "Zkontrolovat Skype kredit"
-
-msgid "Call..."
-msgstr "Zahájit hovor"
-
-msgid "Open Skype Options..."
-msgstr "Otevřít nastavení Skypu"
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr "Vyhledat Skype uživatele"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Zadejte Skype jméno, celé jméno nebo e-mailovou adresu hledaného kamaráda."
-
-msgid "The user does not exist in Skype"
-msgstr "Uživatel neexistuje v síti Skype"
-
-msgid "Skype Name"
-msgstr "Skype jméno"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-msgid "_Search"
-msgstr "_Hledat"
-
-msgid "_Cancel"
-msgstr "_Zrušit"
-
-msgid "_Send File"
-msgstr "_Poslat soubor"
-
-msgid "Initiate _Chat"
-msgstr "Zahájit _pokec"
-
-msgid "_Close"
-msgstr "_Zavřít"
-
-msgid "Full Name"
-msgstr "Celé jméno"
-
-msgid "Country/Region"
-msgstr "Země"
-
-msgid "_Add"
-msgstr "_Přidat"
-
-msgid "Full name"
-msgstr "Celé jméno"
-
-msgid "Personal Information"
-msgstr "Osobní informace"
-
-msgid "Birthday"
-msgstr "Narozeniny"
-
-msgid "Gender"
-msgstr "Pohlaví"
-
-msgid "Preferred Language"
-msgstr "Preferovaný jazyk"
-
-msgid "Country"
-msgstr "Země"
-
-msgid "Authorization Granted"
-msgstr "Autorizace udělena"
-
-msgid "Blocked"
-msgstr "Blokováno"
-
-msgid "Timezone"
-msgstr "Časové pásmo"
-
-msgid "_Accept"
-msgstr "_Přijmout"
-
-msgid "_Reject"
-msgstr "_Odmítnout"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Nelze zaslat soubor uživateli %s, uživatel nepodporuje přenosy souborů"
-
-msgid "Recipient Unavailable"
-msgstr "Příjemce je nedostupný"
-
-msgid "Read Error"
-msgstr "Chyba čtení"
-
-msgid "Write error"
-msgstr "Chyba zápisu"
-
-msgid "Not Authorized"
-msgstr "Neautorizováno"
-
-msgid "%s wants to send you a file"
-msgstr "%s vám chce zaslat soubor"
-
-msgid "File Transfers"
-msgstr "Přenosy souborů"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s změnil(a) téma pokecu na %s"
-
-msgid "Contact Info"
-msgstr "Informace o uživateli"
-
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index c8aeb5d..0000000
--- a/po/de.po
+++ /dev/null
@@ -1,219 +0,0 @@
-# German translation of skype4pidgin plugin
-# Copyright © 2007-2008 Eion Robb
-# Translated by Florian Dorn
-# Florian Dorn <(null)>, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-04-02\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: (null)\n"
-"PO-Revision-Date: 2008-04-02 20:44+0200\n"
-"Last-Translator: Florian Dorn <(null)>\n"
-"Language-Team: German <gnome-de@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Es ist eine neuere Version von des Skype Plugins zum Download verfügbar"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Es gibt eine neuere Version von Skype zum Download"
-
-msgid "No updates found"
-msgstr "Es wurden keine Aktualisierungen gefunden"
-
-msgid "You have the latest version of Skype"
-msgstr "Sie haben die neueste Version von Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Sie haben die neueste Version des Skype Plugins"
-
-msgid "Your version:"
-msgstr "Ihre Version:"
-
-msgid "Latest version:"
-msgstr "Neueste Version:"
-
-msgid "Download from:"
-msgstr "Herunterladen von:"
-
-msgid "Your current Skype credit balance is:"
-msgstr "Ihre aktuelles Skype-Guthaben ist:"
-
-msgid "Skype Balance"
-msgstr "Skype-Guthaben"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Geben Sie die Telefonnummer oder den Skype-Namen ein"
-
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "SkypeOut Kontakte als 'Verfügbar' anzeigen"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Status von Skype ändern, wenn Sie online/offline gehen"
-
-msgid "Automatically check for updates"
-msgstr "Automatisch auf Aktualisierungen prüfen"
-
-msgid "Auto-start Skype if not running"
-msgstr "Skype automatisch starten wenn es nicht läuft"
-
-msgid "The user does not exist in Skype"
-msgstr "Der Benutzer existiert nicht in Skype"
-
-msgid "Offline with Voicemail"
-msgstr "Offline (Anrufbeantworter)"
-
-msgid "Offline with Call Forwarding"
-msgstr "Offline (Anrufweiterleitung)"
-
-msgid "Only one Skype account allowed"
-msgstr "Es ist nur ein Skype Account möglich"
-
-msgid "Skype not responding"
-msgstr "Skype antwortet nicht"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Verbindung zu Skype konnte nicht hergestellt werden.\nIst Skype gestartet?"
-
-msgid "Skype client not ready"
-msgstr "Skype-Client nicht bereit"
-
-msgid "Connected to Skype"
-msgstr "Mit Skype verbunden"
-
-msgid "Skype program closed"
-msgstr "Skype wurde geschlossen"
-
-msgid "%s is calling you."
-msgstr "%s ruft an."
-
-msgid "Do you want to accept their call?"
-msgstr "Anruf entgegennehmen?"
-
-msgid "Last online"
-msgstr "Zuletzt gesehen"
-
-msgid "Number of buddies"
-msgstr "Kontakte"
-
-msgid "Is Video Capable"
-msgstr "Unterstützt Video"
-
-msgid "Hide Skype"
-msgstr "Skype verstecken"
-
-msgid "Check for Skype updates..."
-msgstr "Nach Skype Aktualisierungen suchen..."
-
-msgid "Check for plugin updates..."
-msgstr "Nach Plugin Aktualisierungen suchen..."
-
-msgid "Search for buddies..."
-msgstr "Nach Kontakten suchen..."
-
-msgid "Check Skype balance..."
-msgstr "Skype Guthaben abfragen..."
-
-msgid "Call..."
-msgstr "Anrufen..."
-
-msgid "Open Skype Options..."
-msgstr "Skype Einstellungen öffnen..."
-
-msgid "Search for Skype Users"
-msgstr "Nach Skype Benutzern suchen"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Suchen sie nach Kontakte über Skype-Namen, vollem Namen oder E-Mail-Adresse."
-
-msgid "Skype Name"
-msgstr "Skype-Name"
-
-# Duplicate stuff from Pidgin
-msgid "_Search"
-msgstr "_Suchen"
-
-msgid "_Cancel"
-msgstr "_Abbrechen"
-
-msgid "_Send File"
-msgstr "Datei _senden"
-
-msgid "Initiate _Chat"
-msgstr "_Chat beginnen"
-
-msgid "_Close"
-msgstr "_Schließen"
-
-msgid "Full Name"
-msgstr "Voller Name"
-
-msgid "Country/Region"
-msgstr "Land/Region"
-
-msgid "_Add"
-msgstr "_Hinzufügen"
-
-msgid "Full name"
-msgstr "Voller Name"
-
-msgid "Personal Information"
-msgstr "Persönliche Informationen"
-
-msgid "Birthday"
-msgstr "Geburtstag"
-
-msgid "Gender"
-msgstr "Geschlecht"
-
-msgid "Preferred Language"
-msgstr "Sprache"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Authorization Granted"
-msgstr "Autorisiert"
-
-msgid "Blocked"
-msgstr "Blockiert"
-
-msgid "Timezone"
-msgstr "Zeitzone"
-
-msgid "_Accept"
-msgstr "_Annehmen"
-
-msgid "_Reject"
-msgstr "_Ablehnen"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Die Datei %s konnte nicht gesendet werden. Der Benutzer unterstützt keine Dateiübertragungen"
-
-msgid "Recipient Unavailable"
-msgstr "Empfänger nicht verfügbar"
-
-msgid "Read Error"
-msgstr "Lesefehler"
-
-msgid "Write error"
-msgstr "Schreibfehler"
-
-msgid "Not Authorized"
-msgstr "Nicht autorisiert"
-
-msgid "%s wants to send you a file"
-msgstr "%s möchte ihnen eine Datei senden"
-
-msgid "File Transfers"
-msgstr "Dateiübertragungen"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s hat das Chat-Thema auf '%s' geändert"
-
-msgid "Contact Info"
-msgstr "Kontaktinformationen"
diff --git a/po/en_AU.po b/po/en_AU.po
deleted file mode 100644
index 4001c8f..0000000
--- a/po/en_AU.po
+++ /dev/null
@@ -1,229 +0,0 @@
-# English-Australian translation of skype4pidgin plugin
-# Translated by Eion Robb
-# Eion Robb, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-04-22\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-04-22 11:19+1200\n"
-"Last-Translator: Eion Robb\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr ""
-
-msgid "There is a newer version of Skype available for download"
-msgstr ""
-
-msgid "No updates found"
-msgstr ""
-
-msgid "You have the latest version of Skype"
-msgstr ""
-
-msgid "You have the latest version of the Skype plugin"
-msgstr ""
-
-msgid "Your version:"
-msgstr ""
-
-msgid "Latest version:"
-msgstr ""
-
-msgid "Download from:"
-msgstr ""
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr ""
-
-msgid "Skype Balance"
-msgstr ""
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr ""
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr ""
-
-msgid "Automatically check for updates"
-msgstr ""
-
-msgid "Auto-start Skype if not running"
-msgstr ""
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr ""
-
-msgid "Offline with Call Forwarding"
-msgstr ""
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr ""
-
-msgid "Skype not responding"
-msgstr ""
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr ""
-
-msgid "Skype client not ready"
-msgstr ""
-
-msgid "Connected to Skype"
-msgstr ""
-
-msgid "Skype program closed"
-msgstr ""
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr ""
-
-msgid "%s is calling you."
-msgstr ""
-
-msgid "Do you want to accept their call?"
-msgstr ""
-
-# Buddy information
-msgid "Last online"
-msgstr ""
-
-msgid "Number of buddies"
-msgstr ""
-
-msgid "Is Video Capable"
-msgstr ""
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr ""
-
-msgid "Check for Skype updates..."
-msgstr ""
-
-msgid "Check for plugin updates..."
-msgstr ""
-
-msgid "Search for buddies..."
-msgstr ""
-
-msgid "Check Skype balance..."
-msgstr ""
-
-msgid "Call..."
-msgstr ""
-
-msgid "Open Skype Options..."
-msgstr ""
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr ""
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr ""
-
-msgid "The user does not exist in Skype"
-msgstr ""
-
-msgid "Skype Name"
-msgstr ""
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr ""
-
-msgid "_Cancel"
-msgstr ""
-
-msgid "_Send File"
-msgstr ""
-
-msgid "Initiate _Chat"
-msgstr ""
-
-msgid "_Close"
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "Country/Region"
-msgstr ""
-
-msgid "_Add"
-msgstr ""
-
-msgid "Full name"
-msgstr ""
-
-msgid "Personal Information"
-msgstr ""
-
-msgid "Birthday"
-msgstr ""
-
-msgid "Gender"
-msgstr ""
-
-msgid "Preferred Language"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Authorization Granted"
-msgstr "Authorisation Granted"
-
-msgid "Blocked"
-msgstr ""
-
-msgid "Timezone"
-msgstr ""
-
-msgid "_Accept"
-msgstr ""
-
-msgid "_Reject"
-msgstr ""
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr ""
-
-msgid "Recipient Unavailable"
-msgstr ""
-
-msgid "Read Error"
-msgstr ""
-
-msgid "Write error"
-msgstr ""
-
-msgid "Not Authorized"
-msgstr "Not Authorised"
-
-msgid "%s wants to send you a file"
-msgstr ""
-
-msgid "File Transfers"
-msgstr ""
-
-msgid "%s has changed the topic to: %s"
-msgstr ""
-
-msgid "Contact Info"
-msgstr ""
diff --git a/po/es.po b/po/es.po
deleted file mode 100644
index c6171f0..0000000
--- a/po/es.po
+++ /dev/null
@@ -1,229 +0,0 @@
-# Spanish translation of skype4pidgin plugin
-# Translated by JOHANNA SALCEDO WEEBER
-# JOHANNA SALCEDO WEEBER, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 08.04.23\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-04-23 HO:MI+ZONE\n"
-"Last-Translator: JOHANNA SALCEDO WEEBER <jannita@cogitowireless.net>\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Existe una nueva versión del complemento para Skype disponible para descargar"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Existe una nueva versión de Skype disponible para descargar"
-
-msgid "No updates found"
-msgstr "No hay actualizaciones disponibles"
-
-msgid "You have the latest version of Skype"
-msgstr "Usted tiene la versión mas reciente de Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Usted tiene la última versión del plugin para Skype"
-
-msgid "Your version:"
-msgstr "Su versión:"
-
-msgid "Latest version:"
-msgstr "Última versión disponible:"
-
-msgid "Download from:"
-msgstr "Descargue desde:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "El balance actual de su crédito de skype es:"
-
-msgid "Skype Balance"
-msgstr "Balance de Skype"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Mostrar contactos de SkypeOut como 'Disponibles'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Hacer que Skype se conecte y se desconecte al conectarse/desconectarse"
-
-msgid "Automatically check for updates"
-msgstr "Comprobar actualizaciones automáticamente"
-
-msgid "Auto-start Skype if not running"
-msgstr "Auto-iniciar Skype si no está ejecutándose"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Desconectado con Buzón de Voz"
-
-msgid "Offline with Call Forwarding"
-msgstr "Desconectado con desvío de llamadas"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Solo una cuenta de Skype permitida"
-
-msgid "Skype not responding"
-msgstr "Skype no está respondiendo"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "No se pudo conectar al proceso de Skype.\n¿Skype no se está ejecutando?"
-
-msgid "Skype client not ready"
-msgstr "El cliente de Skype no está listo"
-
-msgid "Connected to Skype"
-msgstr "Conectado a Skype"
-
-msgid "Skype program closed"
-msgstr "Programa de Skype cerrado"
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Ingrese el número de teléfono o nombre de amigo a llamar"
-
-msgid "%s is calling you."
-msgstr "%s está llamando."
-
-msgid "Do you want to accept their call?"
-msgstr "¿Quiere aceptar la llamada?"
-
-# Buddy information
-msgid "Last online"
-msgstr "Última vez visto en línea"
-
-msgid "Number of buddies"
-msgstr "Número de amigos"
-
-msgid "Is Video Capable"
-msgstr "Soporta video"
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr "Esconder Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Comprobar por actualizaciones de Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Comprobar por actualizaciones del plugin..."
-
-msgid "Search for buddies..."
-msgstr "Buscar amigos..."
-
-msgid "Check Skype balance..."
-msgstr ""
-
-msgid "Call..."
-msgstr "Llamar..."
-
-msgid "Open Skype Options..."
-msgstr "Abrir opciones de Skype..."
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr "Buscar a usuarios de Skype"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Ingresa el Nombre de Skype, nombre completo o dirección de e-mail del amigo a quien busca."
-
-msgid "The user does not exist in Skype"
-msgstr "Este usuario no existe en Skype"
-
-msgid "Skype Name"
-msgstr "Nombre de Skype"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr "_Buscar"
-
-msgid "_Cancel"
-msgstr "_Cancelar"
-
-msgid "_Send File"
-msgstr "_Enviar Archivo"
-
-msgid "Initiate _Chat"
-msgstr "Iniciar _Chat"
-
-msgid "_Close"
-msgstr "_Cerrar"
-
-msgid "Full Name"
-msgstr "Nombre Completo"
-
-msgid "Country/Region"
-msgstr "País/Región"
-
-msgid "_Add"
-msgstr "_Agregar"
-
-msgid "Full name"
-msgstr "Nombre completo"
-
-msgid "Personal Information"
-msgstr "Información personal"
-
-msgid "Birthday"
-msgstr "Cumpleaños"
-
-msgid "Gender"
-msgstr "Género"
-
-msgid "Preferred Language"
-msgstr "Idioma"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Authorization Granted"
-msgstr "Autorización otorgada"
-
-msgid "Blocked"
-msgstr "Bloqueado"
-
-msgid "Timezone"
-msgstr "Zona horaria"
-
-msgid "_Accept"
-msgstr "_Aceptar"
-
-msgid "_Reject"
-msgstr "_Rechazar"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Imposible enviar archivos a %s, el usuario no soporta transferencias de archivo"
-
-msgid "Recipient Unavailable"
-msgstr "Receptor no disponible"
-
-msgid "Read Error"
-msgstr "Error de lectura"
-
-msgid "Write error"
-msgstr "Error de escritura"
-
-msgid "Not Authorized"
-msgstr "No autorizado"
-
-msgid "%s wants to send you a file"
-msgstr "%s quiere enviarle un archivo"
-
-msgid "File Transfers"
-msgstr "Transferencias de archivos"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s ha cambiado el tema del chat a: %s"
-
-msgid "Contact Info"
-msgstr "Información de contacto"
diff --git a/po/fr.po b/po/fr.po
deleted file mode 100644
index e76c0ed..0000000
--- a/po/fr.po
+++ /dev/null
@@ -1,215 +0,0 @@
-# French translation of skype4pidgin plugin
-# Translated by Yann Ricquebourg
-
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-03-26\n"
-"PO-Revision-Date: 2008-03-26\n"
-"Last-Translator: Yann Ricquebourg\n"
-"Language-Team: Eion Robb\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Une nouvelle version du plugin Skype est disponible"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Une nouvelle version de Skype est disponible"
-
-msgid "No updates found"
-msgstr "Aucune mise à jour trouvée"
-
-msgid "You have the latest version of Skype"
-msgstr "Votre version de Skype est la plus récente"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Votre version du plugin Skype est la plus récente"
-
-msgid "Your version:"
-msgstr "Votre version :"
-
-msgid "Latest version:"
-msgstr "Version à jour :"
-
-msgid "Download from:"
-msgstr "Téléchargement depuis :"
-
-msgid "Your current Skype credit balance is:"
-msgstr "Votre crédit Skype est :"
-
-msgid "Skype Balance"
-msgstr "Crédit Skype"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Entrez un numéro de téléphone ou un nom d'ami Skype à appeler"
-
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Montrer les contacts SkypeOut en 'Connecté'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Basculer Skype en connecté/déconnecté en se connectant/déconnectant"
-
-msgid "Automatically check for updates"
-msgstr "Vérifier automatiquement les mises à jour"
-
-msgid "Auto-start Skype if not running"
-msgstr "Démarrer automatiquement Skype si nécessaire"
-
-msgid "The user does not exist in Skype"
-msgstr "Cet utilisateur n'existe pas dans Skype"
-
-msgid "Offline with Voicemail"
-msgstr "Déconnecté avec Voicemail"
-
-msgid "Offline with Call Forwarding"
-msgstr "Déconnecté avec renvoi d'appel"
-
-msgid "Only one Skype account allowed"
-msgstr "Un seul compte Skype autorisé"
-
-msgid "Skype not responding"
-msgstr "Skype ne répond pas"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Impossible de se connecter au processus Skype.\nSkype non lancé ?"
-
-msgid "Skype client not ready"
-msgstr "Client Skype non prêt"
-
-msgid "Connected to Skype"
-msgstr "Connecté à Skype"
-
-msgid "Skype program closed"
-msgstr "Arrêt du programme Skype"
-
-msgid "%s is calling you."
-msgstr "%s vous appelle."
-
-msgid "Do you want to accept their call?"
-msgstr "Acceptez-vous l'appel ?"
-
-msgid "Last online"
-msgstr "Dernière connexion"
-
-msgid "Number of buddies"
-msgstr "Nombre de contacts"
-
-msgid "Is Video Capable"
-msgstr "Avec vidéo"
-
-msgid "Hide Skype"
-msgstr "Masquer Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Vérifier les mises à jour de Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Vérifier les mises à jour du plugin Skype..."
-
-msgid "Search for buddies..."
-msgstr "Recherche d'amis..."
-
-msgid "Check Skype balance..."
-msgstr "Vérifier le compte Skype..."
-
-msgid "Call..."
-msgstr "Appel..."
-
-msgid "Open Skype Options..."
-msgstr "Ouvrir les préférences de Skype..."
-
-msgid "Search for Skype Users"
-msgstr "Recherche d'utilisateurs Skype"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Entrez le nom Skype, le nom complet ou l'adresse de courriel d'un ami à rechercher"
-
-msgid "Skype Name"
-msgstr "Nom Skype"
-
-# Duplicate stuff from Pidgin
-msgid "_Search"
-msgstr "_Rechercher"
-
-msgid "_Cancel"
-msgstr "_Annuler"
-
-msgid "_Send File"
-msgstr "_Envoyer un fichier"
-
-msgid "Initiate _Chat"
-msgstr "Démarrer un _clavardage"
-
-msgid "_Close"
-msgstr "_Fermer"
-
-msgid "Full Name"
-msgstr "Nom Complet"
-
-msgid "Country/Region"
-msgstr "Pays/Province"
-
-msgid "_Add"
-msgstr "_Ajouter"
-
-msgid "Full name"
-msgstr "Nom complet"
-
-msgid "Personal Information"
-msgstr "Informations personnelles"
-
-msgid "Birthday"
-msgstr "Date de naissance"
-
-msgid "Gender"
-msgstr "Sexe"
-
-msgid "Preferred Language"
-msgstr "Langue de prédilection"
-
-msgid "Country"
-msgstr "Pays"
-
-msgid "Authorization Granted"
-msgstr "Autorisation fournie"
-
-msgid "Blocked"
-msgstr "Bloqué"
-
-msgid "Timezone"
-msgstr "Fuseau horaire"
-
-msgid "_Accept"
-msgstr "_Accepter"
-
-msgid "_Reject"
-msgstr "_Refuser"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Impossible d'envoyer le fichier à %s, il ne peut recevoir les transferts"
-
-msgid "Recipient Unavailable"
-msgstr "Destinataire non disponible"
-
-msgid "Read Error"
-msgstr "Erreur de lecture"
-
-msgid "Write error"
-msgstr "Erreur d'écriture"
-
-msgid "Not Authorized"
-msgstr "Non autorisé"
-
-msgid "%s wants to send you a file"
-msgstr "%s souhaite vous envoyer un fichier"
-
-msgid "File Transfers"
-msgstr "Transferts de fichiers"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s à changé le sujet en : %s"
-
-msgid "Contact Info"
-msgstr "Info sur le contact"
-
diff --git a/po/hu.po b/po/hu.po
deleted file mode 100644
index 80f9fc2..0000000
--- a/po/hu.po
+++ /dev/null
@@ -1,245 +0,0 @@
-# Hungarian translation of skype4pidgin plugin
-# Translated by Lipilee
-
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-04-28\n"
-"PO-Revision-Date: 2008-04-28\n"
-"Last-Translator: Lipilee\n"
-"Language-Team: Eion Robb\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "A Skype bővítmény új verziója elérhető"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Új Skype verzió elérhető"
-
-msgid "No updates found"
-msgstr "Nincsenek frissítések"
-
-msgid "You have the latest version of Skype"
-msgstr "A Skype legfrissebb verziója van telepítve"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "A Skype bővítmény legfrissebb verziója van telepítve"
-
-msgid "Your version:"
-msgstr "Aktuális verzió:"
-
-msgid "Latest version:"
-msgstr "Legfrissebb verzió:"
-
-msgid "Download from:"
-msgstr "Letöltés innen:"
-
-msgid "Your current Skype credit balance is:"
-msgstr "Aktuális Skype egyenleg:"
-
-msgid "Skype Balance"
-msgstr "Skype egyenleg"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Írja be a felhívni kívánt személy telefonszámát vagy Skype nevét"
-
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "SkypeOut partnerek megjelenítése 'Elérhető' állapotúként"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Skype online/offline állapot váltása ki- és bejelentkezéskor"
-
-msgid "Automatically check for updates"
-msgstr "Frissítések automatikus keresése"
-
-msgid "Auto-start Skype if not running"
-msgstr "Skype automatikus indítása, ha nem fut"
-
-msgid "The user does not exist in Skype"
-msgstr "A felhasználó nem létezik a Skype-ban"
-
-msgid "Offline with Voicemail"
-msgstr "Offline, hangpostával"
-
-msgid "Offline with Call Forwarding"
-msgstr "Offline, hívásátirányítással"
-
-msgid "Only one Skype account allowed"
-msgstr "Csak egy Skype fiók engedélyezett"
-
-msgid "Skype not responding"
-msgstr "A Skype nem válaszol"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Nem sikerült a Skype-hoz csatlakozni.\nLehet, hogy nem fut?"
-
-msgid "Skype client not ready"
-msgstr "Skype kliens nincs kész"
-
-msgid "Connected to Skype"
-msgstr "Csatlakoztatva a Skype-hoz"
-
-msgid "Skype program closed"
-msgstr "A Skype bezáródott"
-
-msgid "%s is calling you."
-msgstr "Bejövő hívás innen: %s"
-
-msgid "Do you want to accept their call?"
-msgstr "Fogadja a hívást?"
-
-msgid "Last online"
-msgstr "Legutóbb online"
-
-msgid "Number of buddies"
-msgstr "Partnerek száma:"
-
-msgid "Is Video Capable"
-msgstr "Videoképes"
-
-msgid "Hide Skype"
-msgstr "Skype elrejtése"
-
-msgid "Check for Skype updates..."
-msgstr "Skype frissítések keresése..."
-
-msgid "Check for plugin updates..."
-msgstr "Bővítmény frissítések keresése..."
-
-msgid "Search for buddies..."
-msgstr "Partnerek keresése..."
-
-msgid "Check Skype balance..."
-msgstr "Skype egyenleg ellenőrzése..."
-
-msgid "Call..."
-msgstr "Hívás..."
-
-msgid "Open Skype Options..."
-msgstr "Skype opciók megnyitása..."
-
-msgid "Search for Skype Users"
-msgstr "Skype felhasználók keresése"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Írja be a keresett partner Skype nevét, teljes nevét, vagy e-mail címét"
-
-msgid "Skype Name"
-msgstr "Skype név"
-
-# Duplicate stuff from Pidgin
-
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-
-msgstr "_Keresés"
-
-msgid "_Cancel"
-
-msgstr "Mé_gsem"
-
-msgid "_Send File"
-
-msgstr "_Fájl küldése"
-
-msgid "Initiate _Chat"
-
-msgstr "Csevegés ke_zdeményezése"
-
-msgid "_Close"
-
-msgstr "_Bezárás"
-
-msgid "Full Name"
-
-msgstr "Teljes név"
-
-msgid "Country/Region"
-
-msgstr "Ország/terület"
-
-msgid "_Add"
-
-msgstr "Hozzá_adás"
-
-msgid "Full name"
-
-msgstr "Teljes név"
-
-msgid "Personal Information"
-
-msgstr "Személyes információk"
-
-msgid "Birthday"
-
-msgstr "Születésnap"
-
-msgid "Gender"
-
-msgstr "Nem"
-
-msgid "Preferred Language"
-
-msgstr "Előnyben részesített nyelv"
-
-msgid "Country"
-
-msgstr "Ország"
-
-msgid "Authorization Granted"
-
-msgstr "Engedély kiadva"
-
-msgid "Blocked"
-
-msgstr "Tiltott"
-
-msgid "Timezone"
-
-msgstr "Időzóna"
-
-msgid "_Accept"
-
-msgstr "Elfog_adás"
-
-msgid "_Reject"
-
-msgstr "_Visszautasítás"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-
-msgstr "Nem lehet fájlt küldeni a következőnek: %s, mert a felhasználó nem támogatja fájlok átvitelét"
-
-msgid "Recipient Unavailable"
-
-msgstr "A címzett nem érhető el"
-
-msgid "Read Error"
-
-msgstr "Olvasási hiba"
-
-msgid "Write error"
-
-msgstr "Írási hiba"
-
-msgid "Not Authorized"
-
-msgstr "Nem engedélyezett"
-
-msgid "%s wants to send you a file"
-
-msgstr "%s egy fájlt akar küldeni"
-
-msgid "File Transfers"
-
-msgstr "Fájlátvitel"
-
-msgid "%s has changed the topic to: %s"
-
-msgstr "%s megváltoztatta a témát a következőre: %s"
-
-msgid "Contact Info"
-
-msgstr "Kapcsolatinformációk"
diff --git a/po/it.po b/po/it.po
deleted file mode 100644
index 4c3e5e1..0000000
--- a/po/it.po
+++ /dev/null
@@ -1,220 +0,0 @@
-# Italian translation of skype4pidgin plugin
-# Translated by Roberto Agria
-# Roberto Agria, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-04-02\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-05-15 10:51+1200\n"
-"Last-Translator: Roberto Agria\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Trovata una nuova versione del plugin per Skype pronta per il download"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Trovata una nuova versione di Skype pronta per il download"
-
-msgid "No updates found"
-msgstr "Nessun aggiornamento disponibile"
-
-msgid "You have the latest version of Skype"
-msgstr "Hai già l'ultima versione di Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Hai già l'ultima versione del plugin per Skype"
-
-msgid "Your version:"
-msgstr "La tua versione:"
-
-msgid "Latest version:"
-msgstr "Ultima versione:"
-
-msgid "Download from:"
-msgstr "Scarica da:"
-
-msgid "Your current Skype credit balance is:"
-msgstr "Il tuo credito Skype è:"
-
-msgid "Skype Balance"
-msgstr "Credito su Skype"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Digita il numero telefonico o il nome utente Skype da contattare"
-
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Mostra i contatti SkypeOut come 'Online'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Connetti/Disconnetti Skype quando esegui la connessione/disconnessione"
-
-msgid "Automatically check for updates"
-msgstr "Controllo automatico degli aggiornamenti"
-
-msgid "Auto-start Skype if not running"
-msgstr "Esegui Skype se necessario"
-
-msgid "The user does not exist in Skype"
-msgstr "L'utente non esiste in Skype"
-
-msgid "Offline with Voicemail"
-msgstr "Disconnesso con VoiceMail"
-
-msgid "Offline with Call Forwarding"
-msgstr "Disconnesso con trasferimento di chiamata"
-
-msgid "Only one Skype account allowed"
-msgstr "E' permesso un solo account Skype"
-
-msgid "Skype not responding"
-msgstr "Skype non risponde"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Impossibile collegarsi al processo Skype.\nSkype non è in esecuzione ?"
-
-msgid "Skype client not ready"
-msgstr "Skype non è ancora operativo"
-
-msgid "Connected to Skype"
-msgstr "Connesso a Skype"
-
-msgid "Skype program closed"
-msgstr "Skype è stato chiuso"
-
-msgid "%s is calling you."
-msgstr "%s ti sta chiamando"
-
-msgid "Do you want to accept their call?"
-msgstr "Desideri accettare la chiamata ?"
-
-msgid "Last online"
-msgstr "Ultima volta online"
-
-msgid "Number of buddies"
-msgstr "Numero di contatti"
-
-msgid "Is Video Capable"
-msgstr "Abilitato al video"
-
-msgid "Hide Skype"
-msgstr "Nascondi Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Controllo per aggiornamenti Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Controllo per aggiornamenti del plugin per Skype..."
-
-msgid "Search for buddies..."
-msgstr "Cerca contatti..."
-
-msgid "Check Skype balance..."
-msgstr "Controlla credito Skype"
-
-msgid "Call..."
-msgstr "Chiama..."
-
-msgid "Open Skype Options..."
-msgstr "Apri le opzioni di Skype..."
-
-msgid "Search for Skype Users"
-msgstr "Cerca utenti Skype..."
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Digita il nome Skype, il nome completo o l'indirizzo email del contatto che desideri cercare."
-
-msgid "Skype Name"
-msgstr "Nome Skype"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr "_Cerca"
-
-msgid "_Cancel"
-msgstr "_Annulla"
-
-msgid "_Send File"
-msgstr "_Invia file"
-
-msgid "Initiate _Chat"
-msgstr "Inizia una _chat"
-
-msgid "_Close"
-msgstr "_Chiudi"
-
-msgid "Full Name"
-msgstr "Nome"
-
-msgid "Country/Region"
-msgstr "Paese"
-
-msgid "_Add"
-msgstr "_Aggiungi"
-
-msgid "Full name"
-msgstr "Nome"
-
-msgid "Personal Information"
-msgstr "Informazioni personali"
-
-msgid "Birthday"
-msgstr "Compleanno"
-
-msgid "Gender"
-msgstr "Sesso"
-
-msgid "Preferred Language"
-msgstr "Lingua preferita"
-
-msgid "Country"
-msgstr "Paese"
-
-msgid "Authorization Granted"
-msgstr "Autorizzazione concessa"
-
-msgid "Blocked"
-msgstr "Bloccato"
-
-msgid "Timezone"
-msgstr "Fuso orario"
-
-msgid "_Accept"
-msgstr "_Accetta"
-
-msgid "_Reject"
-msgstr "_Rifiuta"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Impossibile inviare il file a %s. L'utente non supporta il trasferimento file"
-
-msgid "Recipient Unavailable"
-msgstr "Destinatario non disponibile"
-
-msgid "Read Error"
-msgstr "Errore di lettura"
-
-msgid "Write error"
-msgstr "Errore di scrittura"
-
-msgid "Not Authorized"
-msgstr "Non autorizzato"
-
-msgid "%s wants to send you a file"
-msgstr "%s vuole inviarti un file"
-
-msgid "File Transfers"
-msgstr "Trasferimento file"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s ha scelto come argomento: %s"
-
-msgid "Contact Info"
-msgstr "Informazioni sul contatto"
diff --git a/po/ja.po b/po/ja.po
deleted file mode 100644
index cf21d45..0000000
--- a/po/ja.po
+++ /dev/null
@@ -1,223 +0,0 @@
-# Japanese translation of skype4pidgin plugin
-# Copyright © 2007-2008 Eion Robb
-# Translated by Tim Fields
-
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-03-26\n"
-"PO-Revision-Date: 2008-03-26\n"
-"Last-Translator: Tim Fields\n"
-"Language-Team: Eion Robb\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Skypeプラグインの更新版がダウンロードできます。"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Skypeの更新版がダウンロードできます。"
-
-msgid "No updates found"
-msgstr "只今さらのアップデートがありません。"
-
-msgid "You have the latest version of Skype"
-msgstr "Skypeの最新版をご利用です。"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Skypeプラグインの最新版をご利用です。"
-
-msgid "Your version:"
-msgstr "現在ご利用版:"
-
-msgid "Latest version:"
-msgstr "最新版:"
-
-msgid "Download from:"
-msgstr "ダウンロードはこちら:"
-
-msgid "Your current Skype credit balance is:"
-msgstr "現在Skypeクレジット残高:"
-
-msgid "Skype Balance"
-msgstr "Skypeクレジット残高"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "電話番号またはSkype名を入力"
-
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "SkypeOutコンタクトを「オンライン」として表示"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Pidginにログイン・ログアウトする時、Skypeに自動的にログイン・ログアウト"
-
-msgid "Automatically check for updates"
-msgstr "アップデートを自動的に確認"
-
-msgid "Auto-start Skype if not running"
-msgstr "Skypeが起動されていない場合、自動的に起動"
-
-msgid "The user does not exist in Skype"
-msgstr "Skypeユーザが存在していません。"
-
-msgid "Offline with Voicemail"
-msgstr "オフライン(ボイスメール)"
-
-msgid "Offline with Call Forwarding"
-msgstr "オフライン(通話転送)"
-
-msgid "Only one Skype account allowed"
-msgstr "一つのSkypeアカウントしか登録できません。"
-
-msgid "Skype not responding"
-msgstr "Skypeが接続できません"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Skypeが接続できません。\nSkypeが起動されていますか?"
-
-msgid "Skype client not ready"
-msgstr "Skypeプログラムが起動中です。"
-
-msgid "Connected to Skype"
-msgstr "Skypeに接続しました。"
-
-msgid "Skype program closed"
-msgstr "Skypeが終了されました。"
-
-msgid "%s is calling you."
-msgstr "%sから着信中です。"
-
-msgid "Do you want to accept their call?"
-msgstr "応答しますか?"
-
-msgid "Last online"
-msgstr "最終ログイン"
-
-msgid "Number of buddies"
-msgstr "仲間数量"
-
-msgid "Is Video Capable"
-msgstr "ビデオ可能"
-
-msgid "Hide Skype"
-msgstr "Skypeを隠す"
-
-msgid "Check for Skype updates..."
-msgstr "Skypeアップデートを確認..."
-
-msgid "Check for plugin updates..."
-msgstr "Skypeプラグインのアップデートを確認..."
-
-msgid "Search for buddies..."
-msgstr "仲間を検索..."
-
-msgid "Check Skype balance..."
-msgstr "Skypeクレジット残高を確認..."
-
-msgid "Call..."
-msgstr "発信..."
-
-msgid "Open Skype Options..."
-msgstr "Skypeの設定..."
-
-msgid "Search for Skype Users"
-msgstr "Skypeユーザを検索"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "検索したい仲間のSkype名、氏名またはメールアドレスを入力。"
-
-msgid "Skype Name"
-msgstr "Skype名"
-
-# Duplicate stuff from Pidgin
-msgid "_Search"
-msgstr "検索(_S)"
-
-msgid "_Cancel"
-msgstr "キャンセル(_C)"
-
-msgid "_Send File"
-msgstr "ファイルの送信"
-
-msgid "Initiate _Chat"
-msgstr "チャットの開始(_C)"
-
-msgid "_Close"
-msgstr "閉じる(_C)"
-
-msgid "Full Name"
-msgstr "氏名"
-
-msgid "Country/Region"
-msgstr "国/地方"
-
-msgid "_Add"
-msgstr "追加(_A)"
-
-msgid "Full name"
-msgstr "氏名"
-
-msgid "Personal Information"
-msgstr "個人情報"
-
-msgid "Birthday"
-msgstr "誕生日"
-
-msgid "Gender"
-msgstr "性別"
-
-msgid "Preferred Language"
-msgstr "お好みの言語"
-
-msgid "Country"
-msgstr "国"
-
-msgid "Authorization Granted"
-msgstr "承認が得られました"
-
-msgid "Blocked"
-msgstr "拒否しているか"
-
-msgid "Timezone"
-msgstr "タイムゾーン"
-
-msgid "_Accept"
-msgstr "許可する(_A)"
-
-msgid "_Reject"
-msgstr "拒否する(_R)"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr ""
-"%s さんへファイルを送信できません (ユーザはファイル転送をサポートしていませ"
-"ん)"
-
-msgid "Recipient Unavailable"
-msgstr "受信者がいません"
-
-msgid "Read Error"
-msgstr "読み込みエラー"
-
-msgid "Write error"
-msgstr "書き込みエラー"
-
-msgid "Not Authorized"
-msgstr "承認されていません"
-
-msgid "%s wants to send you a file"
-msgstr "%s さんがファイルを転送したがっています"
-
-msgid "File Transfers"
-msgstr "ファイルの転送"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s さんがトピックを変更しました: %s"
-
-msgid "Contact Info"
-msgstr "連絡先の情報"
-
-msgid "Status"
-msgstr "状態"
-
-msgid "Message"
-msgstr "メッセージ"
diff --git a/po/mk.po b/po/mk.po
deleted file mode 100644
index b4478d8..0000000
--- a/po/mk.po
+++ /dev/null
@@ -1,239 +0,0 @@
-# MACEDONIAN translation of skype4pidgin plugin
-# Translated by Damjan Dimitrioski <damjandimitrioski@gmail.com>
-# This file is put in the public domain.
-#
-# Damjan Dimitrioski, 2009.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: skype4pidgin-mk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2009-01-27 00:48+0100\n"
-"Last-Translator: Damjan Dimitrioski <damjandimitrioski@gmail.com>\n"
-"Language-Team: Macedonian <ufo@linux.net.mk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Macedonian\n"
-"X-Poedit-Country: MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Пронајдов надградба за додатоков"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Пронајдов понов Скајп"
-
-msgid "No updates found"
-msgstr "Нема надградби"
-
-msgid "You have the latest version of Skype"
-msgstr "Ја користиш најновата верзија на Скајп"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Ја користиш најновата верзија на Додатоков"
-
-msgid "Your version:"
-msgstr "Твоја верзија:"
-
-msgid "Latest version:"
-msgstr "Најнова верзија"
-
-msgid "Download from:"
-msgstr "Симни од:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "Твојот Скајп кредит е:"
-
-msgid "Skype Balance"
-msgstr "Скајп Биланс"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Прикажи SkypeOut контакти како 'Онлајн' "
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Синхронизирај го Скајп со статусот при онлајн/офлајн"
-
-msgid "Automatically check for updates"
-msgstr "Автоматски проверувај за надградби"
-
-msgid "Auto-start Skype if not running"
-msgstr "Автоматски приклучи Скајп ако не работи"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Офлајн со Звучна Секретарка"
-
-msgid "Offline with Call Forwarding"
-msgstr "Офлајн со Префрлување на повик"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Само една Скајп сметка е дозволена"
-
-msgid "Skype not responding"
-msgstr "Скајпи не реагира"
-
-msgid ""
-"Could not connect to Skype process.\n"
-"Skype not running?"
-msgstr ""
-"Неможам да се поврзам со процесот на Скајп.\n"
-"Скајп не е вклучен?"
-
-msgid "Skype client not ready"
-msgstr "Скајп клиентот не подготвен"
-
-msgid "Connected to Skype"
-msgstr "Приклучен кон Скајп"
-
-msgid "Skype program closed"
-msgstr "Скајп програмот исклучен"
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Внеси го телефонскиот број од Скајп другарот кој му ѕвониш"
-
-msgid "%s is calling you."
-msgstr "%s ти ѕвони."
-
-msgid "Do you want to accept their call?"
-msgstr "Дали сакаш да го прифатиш нивниот повик?"
-
-# Buddy information
-msgid "Last online"
-msgstr "Последнот онлајн"
-
-msgid "Number of buddies"
-msgstr "Број на другари"
-
-msgid "Is Video Capable"
-msgstr "Со камера"
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr "Скриј Скајп"
-
-msgid "Check for Skype updates..."
-msgstr "Провери за Скајп надградби..."
-
-msgid "Check for plugin updates..."
-msgstr "Провери за надградба на додатоци..."
-
-msgid "Search for buddies..."
-msgstr "Барај другари..."
-
-msgid "Check Skype balance..."
-msgstr "Провери Скајп баланс"
-
-msgid "Call..."
-msgstr "Повикај..."
-
-msgid "Open Skype Options..."
-msgstr "Отвори Скајп Подесувања..."
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr "Барај Скајп Корисници"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Пиши го Скајп името, целосно име или е-мејл адреса од другарот кој го бараш."
-
-msgid "The user does not exist in Skype"
-msgstr "Корисникот не постои во Скајп"
-
-msgid "Skype Name"
-msgstr "Скајп Име"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-msgid "_Search"
-msgstr "_Барај"
-
-msgid "_Cancel"
-msgstr "_Откажи"
-
-msgid "_Send File"
-msgstr "_Прати Датотека"
-
-msgid "Initiate _Chat"
-msgstr "Започни _Разговор"
-
-msgid "_Close"
-msgstr "_Затвори"
-
-msgid "Full Name"
-msgstr "Целосно име"
-
-msgid "Country/Region"
-msgstr "Земја/Регион"
-
-msgid "_Add"
-msgstr "_Додади"
-
-msgid "Full name"
-msgstr "Цело име"
-
-msgid "Personal Information"
-msgstr "Лични Податоци"
-
-msgid "Birthday"
-msgstr "Роденден"
-
-msgid "Gender"
-msgstr "Пол"
-
-msgid "Preferred Language"
-msgstr "Зборува на"
-
-msgid "Country"
-msgstr "Земја"
-
-msgid "Authorization Granted"
-msgstr "Авторизиран"
-
-msgid "Blocked"
-msgstr "Блокиран"
-
-msgid "Timezone"
-msgstr "Временска зона"
-
-msgid "_Accept"
-msgstr "П_рифати"
-
-msgid "_Reject"
-msgstr "_Одбиј"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Неможам да пратам датотека кај %s, корисникот не поддржува пренос на датотеки"
-
-msgid "Recipient Unavailable"
-msgstr "Претплатникот е Недостапен"
-
-msgid "Read Error"
-msgstr "Грешка во читање"
-
-msgid "Write error"
-msgstr "Грешка во пишување"
-
-msgid "Not Authorized"
-msgstr "Не Авторизиран"
-
-msgid "%s wants to send you a file"
-msgstr "%s сака да ти прати датотека"
-
-msgid "File Transfers"
-msgstr "Датотечен Пренос"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s ја промени темата во: %s"
-
-msgid "Contact Info"
-msgstr "Контакт Податоци"
-
diff --git a/po/nb.po b/po/nb.po
deleted file mode 100644
index f13f456..0000000
--- a/po/nb.po
+++ /dev/null
@@ -1,219 +0,0 @@
-# Norwegian Bokmål translation of skype4pidgin plugin
-# Translated by Thomas B
-# Thomas B, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-04-22\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: (null)\n"
-"PO-Revision-Date: 2008-04-22 08:24+1200\n"
-"Last-Translator: Thomas B <(null)>\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Det finnes en nyere versjon av Skype-innstikksprogrammet tilgjengelig for nedlasting"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Det finnes en nyere versjon av Skype tilgjengelig for nedlasting"
-
-msgid "No updates found"
-msgstr "Ingen oppdateringer funnet"
-
-msgid "You have the latest version of Skype"
-msgstr "Du har siste versjon av Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Du har siste versjon av Skype-innstikksprogrammet"
-
-msgid "Your version:"
-msgstr "Din versjon:"
-
-msgid "Latest version:"
-msgstr "Siste versjon:"
-
-msgid "Download from:"
-msgstr "Last ned fra:"
-
-msgid "Your current Skype credit balance is:"
-msgstr "Din nåværende Skype-kredittbalanse er:"
-
-msgid "Skype Balance"
-msgstr "Skype-balanse"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Tast inn telefonnummer eller Skype-kompis å ringe til"
-
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Vis SkypeOut-kontakter som 'Pålogget'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Logg Skype av/på når du logger av/på"
-
-msgid "Automatically check for updates"
-msgstr "Automatisk se etter oppdateringer"
-
-msgid "Auto-start Skype if not running"
-msgstr "Start Skype automatisk hvis det ikke kjører"
-
-msgid "The user does not exist in Skype"
-msgstr "Brukeren eksisterer ikke i Skype"
-
-msgid "Offline with Voicemail"
-msgstr "Avlogget med telefonsvarer"
-
-msgid "Offline with Call Forwarding"
-msgstr "Avlogget med viderekobling"
-
-msgid "Only one Skype account allowed"
-msgstr "Kun en Skype-konto tillatt"
-
-msgid "Skype not responding"
-msgstr "Skype svarer ikke"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Kunne ikke koble til Skype-prosessen.\nKjører ikke Skype ?"
-
-msgid "Skype client not ready"
-msgstr "Skype-klienten er ikke klar"
-
-msgid "Connected to Skype"
-msgstr "Tilkoblet Skype"
-
-msgid "Skype program closed"
-msgstr "Skype-programmet er lukket"
-
-msgid "%s is calling you."
-msgstr "%s ringer deg."
-
-msgid "Do you want to accept their call?"
-msgstr "Ønsker du å besvare ?"
-
-msgid "Last online"
-msgstr "Sist pålogget"
-
-msgid "Number of buddies"
-msgstr "Antall kompiser"
-
-msgid "Is Video Capable"
-msgstr "Har videokapabilitet"
-
-msgid "Hide Skype"
-msgstr "Skjul Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Se etter Skype-oppdateringer..."
-
-msgid "Check for plugin updates..."
-msgstr "Se etter oppdatering for Skype-innstikk.."
-
-msgid "Search for buddies..."
-msgstr "Søke etter kompiser..."
-
-msgid "Check Skype balance..."
-msgstr "Sjekke Skype-balanse..."
-
-msgid "Call..."
-msgstr "Ringe..."
-
-msgid "Open Skype Options..."
-msgstr "Åpne Skype-valg..."
-
-msgid "Search for Skype Users"
-msgstr "Søk etter Skype-brukere"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Tast inn Skype-navnet, det fulle navnet eller e-postadressen til kompisen du vil søke etter."
-
-msgid "Skype Name"
-msgstr "Skype-navn"
-
-# Duplicate stuff from Pidgin
-
-msgid "_Search"
-msgstr "_Søk"
-
-msgid "_Cancel"
-msgstr "_Avbryt"
-
-msgid "_Send File"
-msgstr "_Send fil"
-
-msgid "Initiate _Chat"
-msgstr "Start gruppesamtale"
-
-msgid "_Close"
-msgstr "L_ukk"
-
-msgid "Full Name"
-msgstr "Fullt navn"
-
-msgid "Country/Region"
-msgstr "Land"
-
-msgid "_Add"
-msgstr "_Legg til"
-
-msgid "Full name"
-msgstr "Fullt navn"
-
-msgid "Personal Information"
-msgstr "Personlig informasjon"
-
-msgid "Birthday"
-msgstr "Fødselsdag"
-
-msgid "Gender"
-msgstr "Kjønn"
-
-msgid "Preferred Language"
-msgstr "Foretrukket språk"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Authorization Granted"
-msgstr "Godkjent"
-
-msgid "Blocked"
-msgstr "Blokkert"
-
-msgid "Timezone"
-msgstr "Tidssone"
-
-msgid "_Accept"
-msgstr "_Godta"
-
-msgid "_Reject"
-msgstr "_Avslå"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Klarte ikke sende fil til %s - brukeren støtter ikke filoverføringer"
-
-msgid "Recipient Unavailable"
-msgstr "Mottager utilgjengelig"
-
-msgid "Read Error"
-msgstr "Lesefeil"
-
-msgid "Write error"
-msgstr "Feil ved skriving"
-
-msgid "Not Authorized"
-msgstr "Ikke godkjent"
-
-msgid "%s wants to send you a file"
-msgstr "%s ønsker å sende deg en fil"
-
-msgid "File Transfers"
-msgstr "Filoverføringer"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s har endret temaet til: %s"
-
-msgid "Contact Info"
-msgstr "Kontaktinformasjon"
diff --git a/po/pl.po b/po/pl.po
deleted file mode 100644
index 4d0f368..0000000
--- a/po/pl.po
+++ /dev/null
@@ -1,229 +0,0 @@
-# Polish translation of skype4pidgin plugin
-# Translated by Jakub Chrzanowski
-# Jakub Chrzanowski, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-05-18\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-05-20 12:56+1200\n"
-"Last-Translator: Jakub Chrzanowski\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Ukazała się nowa wersja pluginu Skype do pobrania"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Ukazała się nowa wersja Skype do pobrania"
-
-msgid "No updates found"
-msgstr "Nie znaleziono aktualizacji"
-
-msgid "You have the latest version of Skype"
-msgstr "Posiadasz aktualną wersję Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Posiadasz aktualną wersję pluginu Skype"
-
-msgid "Your version:"
-msgstr "Twoja wersja:"
-
-msgid "Latest version:"
-msgstr "Ostatnia wersja"
-
-msgid "Download from:"
-msgstr "Pobierz z:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "Aktualny stan Twojego konta Skype wynosi:"
-
-msgid "Skype Balance"
-msgstr "Środki Skype"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Pokaż kontakty SkypeOut jako 'Dostępne'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Ustaw status Skype na dostępny/niedostępny gdy staniesz się dostępny/niedostępny"
-
-msgid "Automatically check for updates"
-msgstr "Automatycznie sprawdzaj aktualizacje"
-
-msgid "Auto-start Skype if not running"
-msgstr "Automatycznie uruchom Skype jeśli wyłączony"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Niedostępni z Pocztą głosową"
-
-msgid "Offline with Call Forwarding"
-msgstr "Niedostępni z Przekierowaniem połączeń"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Dozwolone tylko jedno konto Skype"
-
-msgid "Skype not responding"
-msgstr "Skype nie odpowiada"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Nie można połączyć się z procesem Skype.\nSkype nie jest uruchomione ?"
-
-msgid "Skype client not ready"
-msgstr "Klient Skype niegotowy"
-
-msgid "Connected to Skype"
-msgstr "Podłączono do Skype"
-
-msgid "Skype program closed"
-msgstr "Skype zostało zamknięte"
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Wpisz numer telefonu lub nazwę użytkownika Skype aby zadzwonić"
-
-msgid "%s is calling you."
-msgstr "%s dzwoni do Ciebie"
-
-msgid "Do you want to accept their call?"
-msgstr "Czy chcesz zaakceptować ich rozmowę?"
-
-# Buddy information
-msgid "Last online"
-msgstr "Ostatnio dostępny"
-
-msgid "Number of buddies"
-msgstr "Liczba znajomych"
-
-msgid "Is Video Capable"
-msgstr "Czy obsługuje wideo"
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr "Ukryj Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Sprawdź aktualizacje Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Sprawdź aktualizacje pluginu..."
-
-msgid "Search for buddies..."
-msgstr "Szukaj znajomych..."
-
-msgid "Check Skype balance..."
-msgstr "Sprawdź środki Skype..."
-
-msgid "Call..."
-msgstr "Rozpocznij rozmowę..."
-
-msgid "Open Skype Options..."
-msgstr "Otwórz opcje Skype..."
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr "Szukaj Użytkowników Skype..."
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Wpisz nazwę użytkownika Skype, imię i nazwisko lub adres e-mail znajomego, którego szukasz:"
-
-msgid "The user does not exist in Skype"
-msgstr "Użytkownik nie istnieje w Skype"
-
-msgid "Skype Name"
-msgstr "Nazwa użytkownika Skype"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr "Zn_ajdź"
-
-msgid "_Cancel"
-msgstr "_Anuluj"
-
-msgid "_Send File"
-msgstr "Wyślij _plik"
-
-msgid "Initiate _Chat"
-msgstr "Rozpocznij _konferencję"
-
-msgid "_Close"
-msgstr "_Zamknij"
-
-msgid "Full Name"
-msgstr "Imię i nazwisko"
-
-msgid "Country/Region"
-msgstr "Kraj/Region"
-
-msgid "_Add"
-msgstr "_Dodaj"
-
-msgid "Full name"
-msgstr "Imię i nazwisko"
-
-msgid "Personal Information"
-msgstr "Informacje osobiste"
-
-msgid "Birthday"
-msgstr "Data urodzenia"
-
-msgid "Gender"
-msgstr "Płeć"
-
-msgid "Preferred Language"
-msgstr "Preferowany język"
-
-msgid "Country"
-msgstr "Kraj"
-
-msgid "Authorization Granted"
-msgstr "Udzielono autoryzacji"
-
-msgid "Blocked"
-msgstr "Zablokowane"
-
-msgid "Timezone"
-msgstr "Strefa czasowa"
-
-msgid "_Accept"
-msgstr "_Akceptuj"
-
-msgid "_Reject"
-msgstr "_Odrzuć"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Nie można przesłać pliku do %s, użytkownik nie ma włączonej obsługi przesyłania plików"
-
-msgid "Recipient Unavailable"
-msgstr "Odbiorca jest niedostępny"
-
-msgid "Read Error"
-msgstr "Błąd oczytu"
-
-msgid "Write error"
-msgstr "Błąd zapisu"
-
-msgid "Not Authorized"
-msgstr "Brak autoryzacji"
-
-msgid "%s wants to send you a file"
-msgstr "%s chce wysłać tobie plik"
-
-msgid "File Transfers"
-msgstr "Transmisja plików"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s zmieniła/zmienił temat na: %s"
-
-msgid "Contact Info"
-msgstr "Informacje o kontakcie"
diff --git a/po/pt.po b/po/pt.po
deleted file mode 100644
index 6c33427..0000000
--- a/po/pt.po
+++ /dev/null
@@ -1,202 +0,0 @@
-# Portuguese translation of skype4pidgin plugin
-# Translated by Paulo Matos
-# Paulo Matos, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-07-01\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-07-02 17:30+0100\n"
-"Last-Translator: Paulo Matos <paulo.matos@fct.unl.pt>\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Existe uma nova versão do plugin do Skype disponível para download"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Existe uma nova versão do Skype disponível para download"
-
-msgid "No updates found"
-msgstr "Não há actualizações"
-
-msgid "You have the latest version of Skype"
-msgstr "Tem a última versão do Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Tem a última versão do plugin do Skype"
-
-msgid "Your version:"
-msgstr "Versão:"
-
-msgid "Latest version:"
-msgstr "Última versão:"
-
-msgid "Download from:"
-msgstr "Download de:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "O seu saldo Skype é:"
-
-msgid "Skype Balance"
-msgstr "Saldo Skype"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Mostrar contactos SkypeOut como 'Online'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Ligar ou desligar o skype quando se liga/desliga"
-
-msgid "Automatically check for updates"
-msgstr "Verificar actualizações automaticamente"
-
-msgid "Auto-start Skype if not running"
-msgstr "Ligar o Skype automaticamente se não estiver ligado"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Desligado com Atendedor de Chamadas"
-
-msgid "Offline with Call Forwarding"
-msgstr "Desligado com Reenvio de Chamadas"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Apenas uma conta Skype é permitida"
-
-msgid "Skype not responding"
-msgstr "Skype não responde"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Não foi possível establecer ligação ao processo Skype.\nO Skype está a funcionar?"
-
-msgid "Skype client not ready"
-msgstr "Cliente Skype ainda não está operacional"
-
-msgid "Connected to Skype"
-msgstr "Ligado ao Skype"
-
-msgid "Skype program closed"
-msgstr "Programa de Skype encerrado"
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Introduza o número de telefone ou o nome SKype para efectuar a ligação"
-
-msgid "%s is calling you."
-msgstr "%s está a ligar-lhe."
-
-msgid "Do you want to accept their call?"
-msgstr "Deseja aceitar a ligação?"
-
-# Buddy information
-msgid "Last online"
-msgstr "Última vez online"
-
-msgid "Number of buddies"
-msgstr "Número de amigos"
-
-msgid "Is Video Capable"
-msgstr "Suporta vídeo"
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr "Esconder Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Verificar actualizações do Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Verificar actualizações do plugin..."
-
-msgid "Search for buddies..."
-msgstr "Pesquisar pessoas..."
-
-msgid "Check Skype balance..."
-msgstr "Verificar Saldo Skype..."
-
-msgid "Call..."
-msgstr "Ligar..."
-
-msgid "Open Skype Options..."
-msgstr "Abrir Opções Skype..."
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr "Pesquisa de Utilizadores Skype"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Escreva o Nome Skype, nome completo ou endereço de email da pessoa que pretende pesquisar."
-
-msgid "The user does not exist in Skype"
-msgstr "O utilizador não existe no Skype"
-
-msgid "Skype Name"
-msgstr "Nome Skype"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr "_Pesquisa"
-msgid "_Cancel"
-msgstr "_Cancelar"
-msgid "_Send File"
-msgstr "_Enviar Ficheiro"
-msgid "Initiate _Chat"
-msgstr "Iniciar _Chat"
-msgid "_Close"
-msgstr "_Fechar"
-msgid "Full Name"
-msgstr "Nome Completo"
-msgid "Country/Region"
-msgstr "País/Região"
-msgid "_Add"
-msgstr "_Adicionar"
-msgid "Full name"
-msgstr "Nome completo"
-msgid "Personal Information"
-msgstr "Informação Pessoal"
-msgid "Birthday"
-msgstr "Aniversário"
-msgid "Gender"
-msgstr "Género"
-msgid "Preferred Language"
-msgstr "Idioma "
-msgid "Country"
-msgstr "País"
-msgid "Authorization Granted"
-msgstr "Autorização Concedida"
-msgid "Blocked"
-msgstr "Bloqueado"
-msgid "Timezone"
-msgstr "Zona horária"
-msgid "_Accept"
-msgstr "_Aceitar"
-msgid "_Reject"
-msgstr "_Rejeitar"
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Impossível o envio de ficheiros para %s, o utilizador não suporta transferência de ficheiros"
-msgid "Recipient Unavailable"
-msgstr "Receptor Indisponível"
-msgid "Read Error"
-msgstr "Erro de leitura"
-msgid "Write error"
-msgstr "Erro de escrita"
-msgid "Not Authorized"
-msgstr "Não Autorizado"
-msgid "%s wants to send you a file"
-msgstr "%s enviou-lhe um ficheiro"
-msgid "File Transfers"
-msgstr "Tranferências de Ficheiros"
-msgid "%s has changed the topic to: %s"
-msgstr "%s alterou o tópico para: %s"
-msgid "Contact Info"
-msgstr "Informação de Contacto"
diff --git a/po/pt_BR.po b/po/pt_BR.po
deleted file mode 100644
index f9bdbba..0000000
--- a/po/pt_BR.po
+++ /dev/null
@@ -1,229 +0,0 @@
-# Brazilian Portuguese translation of skype4pidgin plugin
-# Translated by Mauro José da Silva
-# Mauro José da Silva, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-07-24\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-08-04 13:14-0300\n"
-"Last-Translator: Mauro José da Silva <sjoruam@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Há uma nova versão do plugin disponível"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Há uma nova versão do Skype disponível"
-
-msgid "No updates found"
-msgstr "Não há atualizações disponíveis"
-
-msgid "You have the latest version of Skype"
-msgstr "Você tem a última versão do Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "Você tem a última versão do plugin"
-
-msgid "Your version:"
-msgstr "Sua versão:"
-
-msgid "Latest version:"
-msgstr "Última versão:"
-
-msgid "Download from:"
-msgstr "Baixar de:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "Seu saldo de créditos no Skype é:"
-
-msgid "Skype Balance"
-msgstr "Saldo de créditos"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Exibir contatos do SkypeOut como 'Disponíveis'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Conectar/desconetar no Skype automaticamente"
-
-msgid "Automatically check for updates"
-msgstr "Procurar atualizações automaticamente"
-
-msgid "Auto-start Skype if not running"
-msgstr "Iniciar o Skype automaticamente"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Desconectado, mas com correio de voz"
-
-msgid "Offline with Call Forwarding"
-msgstr "Desconectado, mas com transferência de chamada"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Apenas uma conta do Skype é permitida"
-
-msgid "Skype not responding"
-msgstr "O Skype não está respondendo"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Não é possível conectar no Skype.\nVerifique se o Skype foi iniciado."
-
-msgid "Skype client not ready"
-msgstr "O Skype não está pronto"
-
-msgid "Connected to Skype"
-msgstr "Conectado no Skype"
-
-msgid "Skype program closed"
-msgstr "O Skype está fechado"
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Digite o número de telefone ou o nome Skype do contato que você deseja chamar."
-
-msgid "%s is calling you."
-msgstr "%s está chamando você."
-
-msgid "Do you want to accept their call?"
-msgstr "Você quer aceitar esta chamada?"
-
-# Buddy information
-msgid "Last online"
-msgstr "Última vez online"
-
-msgid "Number of buddies"
-msgstr "Número de contatos"
-
-msgid "Is Video Capable"
-msgstr "Possui vídeo"
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr "Esconder o Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Procurar atualização do Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Procurar atualização do plugin..."
-
-msgid "Search for buddies..."
-msgstr "Procurar contatos..."
-
-msgid "Check Skype balance..."
-msgstr "Verificar saldo de créditos..."
-
-msgid "Call..."
-msgstr "Iniciar _chamada..."
-
-msgid "Open Skype Options..."
-msgstr "Abrir opções do Skype..."
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr "Procurar usuários do Skype"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Digite o nome Skype, o nome completo ou o endereço de e-mail da pessoa que você está procurando."
-
-msgid "The user does not exist in Skype"
-msgstr "O usuário não existe no Skype"
-
-msgid "Skype Name"
-msgstr "Nome Skype"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr "_Procurar"
-
-msgid "_Cancel"
-msgstr "_Cancelar"
-
-msgid "_Send File"
-msgstr "_Enviar arquivo"
-
-msgid "Initiate _Chat"
-msgstr "Iniciar _bate-papo"
-
-msgid "_Close"
-msgstr "_Fechar"
-
-msgid "Full Name"
-msgstr "Nome completo"
-
-msgid "Country/Region"
-msgstr "País/Região"
-
-msgid "_Add"
-msgstr "_Adicionar"
-
-msgid "Full name"
-msgstr "Nome completo"
-
-msgid "Personal Information"
-msgstr "Dados pessoais"
-
-msgid "Birthday"
-msgstr "Data de nascimento"
-
-msgid "Gender"
-msgstr "Sexo"
-
-msgid "Preferred Language"
-msgstr "Idioma"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Authorization Granted"
-msgstr "Autorizado"
-
-msgid "Blocked"
-msgstr "Bloqueado"
-
-msgid "Timezone"
-msgstr "Fuso horário"
-
-msgid "_Accept"
-msgstr "_Aceitar"
-
-msgid "_Reject"
-msgstr "_Rejeitar"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Não é possível enviar arquivo para %s, pois esse usuário não suporta transferências de arquivo"
-
-msgid "Recipient Unavailable"
-msgstr "Destinatário indisponível"
-
-msgid "Read Error"
-msgstr "Erro de leitura"
-
-msgid "Write error"
-msgstr "Erro de gravação"
-
-msgid "Not Authorized"
-msgstr "Não autorizado"
-
-msgid "%s wants to send you a file"
-msgstr "%s quer enviar um arquivo para você"
-
-msgid "File Transfers"
-msgstr "Transferência de arquivos"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s alterou o tópico para: %s"
-
-msgid "Contact Info"
-msgstr "Informações do Contato"
diff --git a/po/ru.po b/po/ru.po
deleted file mode 100644
index b89da17..0000000
--- a/po/ru.po
+++ /dev/null
@@ -1,226 +0,0 @@
-# Russian translation of skype4pidgin plugin
-# Translated by Petr Vasilyev
-# Petr Vasilyev, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2008-04-22\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: 2008-05-16 09:52+1200\n"
-"Last-Translator: Petr Vasilyev\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr "Доступно обновление Pidgin/Skype плагина"
-
-msgid "There is a newer version of Skype available for download"
-msgstr "Доступна новая версия Skype"
-
-msgid "No updates found"
-msgstr "Обновлений не найдено"
-
-msgid "You have the latest version of Skype"
-msgstr "У Вас самая свежая версия Skype"
-
-msgid "You have the latest version of the Skype plugin"
-msgstr "У Вас самая свежая версия Pidgin/Skype плагина"
-
-msgid "Your version:"
-msgstr "Ваша версия:"
-
-msgid "Latest version:"
-msgstr "Самая свежая версия:"
-
-msgid "Download from:"
-msgstr "Скачать с:"
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr "На Вашем Skype счёте осталось:"
-
-msgid "Skype Balance"
-msgstr "Skype счёт:"
-
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr "Введите телефонный номер или имя пользователя Skype"
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr "Показывать статус Skype Out контактов как 'Доступен'"
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr "Соединять/отсоединять Skype от сети вместе с Pidgin"
-
-msgid "Automatically check for updates"
-msgstr "Автоматически проверять обновления"
-
-msgid "Auto-start Skype if not running"
-msgstr "Запускать Skype, если он не запущен"
-
-msgid "The user does not exist in Skype"
-msgstr "Такого пользователя Skype не существует"
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr "Не в сети, включена голосовая почта"
-
-msgid "Offline with Call Forwarding"
-msgstr "Не в сети, включена переадресация вызова"
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr "Можно пользоваться только одной учётной записью Skype"
-
-msgid "Skype not responding"
-msgstr "Skype не отвечает"
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr "Не могу соединиться с процессом Skype.\nSkype не запущен?"
-
-msgid "Skype client not ready"
-msgstr "Skype не готов"
-
-msgid "Connected to Skype"
-msgstr "Соединён со Skype"
-
-msgid "Skype program closed"
-msgstr "Приложение Skype было закрыто"
-
-msgid "%s is calling you."
-msgstr "Вам звонит %s"
-
-msgid "Do you want to accept their call?"
-msgstr "Вы хотите принять звонок?"
-
-msgid "Last online"
-msgstr "Последний раз был в сети"
-
-msgid "Number of buddies"
-msgstr "Количество контактов"
-
-msgid "Is Video Capable"
-msgstr "Доступен ли видео чат"
-
-msgid "Hide Skype"
-msgstr "Скрыть Skype"
-
-msgid "Check for Skype updates..."
-msgstr "Проверить обновления Skype..."
-
-msgid "Check for plugin updates..."
-msgstr "Проверить обновления Pidgin/Skype плагина..."
-
-msgid "Search for buddies..."
-msgstr "Поискать пользователей Skype..."
-
-msgid "Check Skype balance..."
-msgstr "Проверить состояние счёта Skype..."
-
-msgid "Call..."
-msgstr "Позвонить..."
-
-msgid "Open Skype Options..."
-msgstr "Открыть окно настроек Skype..."
-
-msgid "Search for Skype Users"
-msgstr "Искать пользователей Skype"
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr "Введите Skype имя, полное имя или почтовый адрес человека, которого Вы ищете."
-
-msgid "Skype Name"
-msgstr "Skype имя"
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr "_Искать"
-
-msgid "_Cancel"
-msgstr "О_тменить"
-
-msgid "_Send File"
-msgstr "Отправить _файл"
-
-msgid "Initiate _Chat"
-msgstr "Создать _чат"
-
-msgid "_Close"
-msgstr "_Закрыть"
-
-msgid "Full Name"
-msgstr "Полное имя"
-
-msgid "Country/Region"
-msgstr "Страна/Регион"
-
-msgid "_Add"
-msgstr "_Добавить"
-
-msgid "Full name"
-msgstr "Полное Имя"
-
-msgid "Personal Information"
-msgstr "Персональная информация"
-
-msgid "Birthday"
-msgstr "Дата рождения"
-
-msgid "Gender"
-msgstr "Пол"
-
-msgid "Preferred Language"
-msgstr "Предпочитаемый язык"
-
-msgid "Country"
-msgstr "Страна"
-
-msgid "Authorization Granted"
-msgstr "Авторизация дана"
-
-msgid "Blocked"
-msgstr "Заблокирован"
-
-msgid "Timezone"
-msgstr "Часовой пояс"
-
-msgid "_Accept"
-msgstr "_Принять"
-
-msgid "_Reject"
-msgstr "_Отвергнуть"
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr "Не удаётся отправить файл для %s, пользователь не поддерживает приём файлов"
-
-msgid "Recipient Unavailable"
-msgstr "Получатель недоступен"
-
-msgid "Read Error"
-msgstr "Ошибка чтения"
-
-msgid "Write error"
-msgstr "Ошибка записи"
-
-msgid "Not Authorized"
-msgstr "Не авторизован"
-
-msgid "%s wants to send you a file"
-msgstr "%s хочет отправить вам файл"
-
-msgid "File Transfers"
-msgstr "Передача файлов"
-
-msgid "%s has changed the topic to: %s"
-msgstr "%s сменил тему на: %s"
-
-msgid "Contact Info"
-msgstr "Контактная информация"
-
diff --git a/po/skype4pidgin.pot b/po/skype4pidgin.pot
deleted file mode 100644
index a5cc05e..0000000
--- a/po/skype4pidgin.pot
+++ /dev/null
@@ -1,229 +0,0 @@
-# LANGUAGE translation of skype4pidgin plugin
-# Translated by FULL NAME
-# FULLNAME, YEAR.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-22 10:53+1200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"MIME-Version: 1.0\n"
-"Language-Team: \n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit"
-
-# Checking for updates:
-msgid "There is a newer version of the Skype plugin available for download"
-msgstr ""
-
-msgid "There is a newer version of Skype available for download"
-msgstr ""
-
-msgid "No updates found"
-msgstr ""
-
-msgid "You have the latest version of Skype"
-msgstr ""
-
-msgid "You have the latest version of the Skype plugin"
-msgstr ""
-
-msgid "Your version:"
-msgstr ""
-
-msgid "Latest version:"
-msgstr ""
-
-msgid "Download from:"
-msgstr ""
-
-# Skype account balance stuff:
-msgid "Your current Skype credit balance is:"
-msgstr ""
-
-msgid "Skype Balance"
-msgstr ""
-
-# Plugin options:
-msgid "Show SkypeOut contacts as 'Online'"
-msgstr ""
-
-msgid "Make Skype online/offline when going online/offline"
-msgstr ""
-
-msgid "Automatically check for updates"
-msgstr ""
-
-msgid "Auto-start Skype if not running"
-msgstr ""
-
-# Buddy status:
-msgid "Offline with Voicemail"
-msgstr ""
-
-msgid "Offline with Call Forwarding"
-msgstr ""
-
-# Connection messages:
-msgid "Only one Skype account allowed"
-msgstr ""
-
-msgid "Skype not responding"
-msgstr ""
-
-msgid "Could not connect to Skype process.\nSkype not running?"
-msgstr ""
-
-msgid "Skype client not ready"
-msgstr ""
-
-msgid "Connected to Skype"
-msgstr ""
-
-msgid "Skype program closed"
-msgstr ""
-
-# Skype calling stuff
-msgid "Enter the phone number or Skype buddy name to call"
-msgstr ""
-
-msgid "%s is calling you."
-msgstr ""
-
-msgid "Do you want to accept their call?"
-msgstr ""
-
-# Buddy information
-msgid "Last online"
-msgstr ""
-
-msgid "Number of buddies"
-msgstr ""
-
-msgid "Is Video Capable"
-msgstr ""
-
-# Plugin menu options
-msgid "Hide Skype"
-msgstr ""
-
-msgid "Check for Skype updates..."
-msgstr ""
-
-msgid "Check for plugin updates..."
-msgstr ""
-
-msgid "Search for buddies..."
-msgstr ""
-
-msgid "Check Skype balance..."
-msgstr ""
-
-msgid "Call..."
-msgstr ""
-
-msgid "Open Skype Options..."
-msgstr ""
-
-# User searching:
-msgid "Search for Skype Users"
-msgstr ""
-
-msgid "Type the Skype Name, full name or e-mail address of the buddy you are searching for."
-msgstr ""
-
-msgid "The user does not exist in Skype"
-msgstr ""
-
-msgid "Skype Name"
-msgstr ""
-
-# Duplicate stuff from Pidgin
-# Copy from {pidginsource}/po/{languagecode}.po
-
-msgid "_Search"
-msgstr ""
-
-msgid "_Cancel"
-msgstr ""
-
-msgid "_Send File"
-msgstr ""
-
-msgid "Initiate _Chat"
-msgstr ""
-
-msgid "_Close"
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "Country/Region"
-msgstr ""
-
-msgid "_Add"
-msgstr ""
-
-msgid "Full name"
-msgstr ""
-
-msgid "Personal Information"
-msgstr ""
-
-msgid "Birthday"
-msgstr ""
-
-msgid "Gender"
-msgstr ""
-
-msgid "Preferred Language"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Authorization Granted"
-msgstr ""
-
-msgid "Blocked"
-msgstr ""
-
-msgid "Timezone"
-msgstr ""
-
-msgid "_Accept"
-msgstr ""
-
-msgid "_Reject"
-msgstr ""
-
-msgid "Unable to send file to %s, user does not support file transfers"
-msgstr ""
-
-msgid "Recipient Unavailable"
-msgstr ""
-
-msgid "Read Error"
-msgstr ""
-
-msgid "Write error"
-msgstr ""
-
-msgid "Not Authorized"
-msgstr ""
-
-msgid "%s wants to send you a file"
-msgstr ""
-
-msgid "File Transfers"
-msgstr ""
-
-msgid "%s has changed the topic to: %s"
-msgstr ""
-
-msgid "Contact Info"
-msgstr ""
diff --git a/skype4pidgin.nsi b/skype4pidgin.nsi
deleted file mode 100755
index 65370b3..0000000
--- a/skype4pidgin.nsi
+++ /dev/null
@@ -1,131 +0,0 @@
-; Script based on Off-the-Record Messaging NSI file
-
-
-SetCompress off
-
-; todo: SetBrandingImage
-; HM NIS Edit Wizard helper defines
-!define PRODUCT_NAME "skype4pidgin"
-!define PRODUCT_VERSION "07-Apr-2011"
-!define PRODUCT_PUBLISHER "Eion Robb"
-!define PRODUCT_WEB_SITE "http://skype4pidgin.googlecode.com/"
-!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
-!define PRODUCT_UNINST_ROOT_KEY "HKLM"
-
-; MUI 1.67 compatible ------
-!include "MUI.nsh"
-
-; MUI Settings
-!define MUI_ABORTWARNING
-!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
-!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
-
-; Welcome page
-!insertmacro MUI_PAGE_WELCOME
-; License page
-!insertmacro MUI_PAGE_LICENSE "COPYING.txt"
-; Directory page
-;!define MUI_PAGE_CUSTOMFUNCTION_PRE dir_pre
-;!insertmacro MUI_PAGE_DIRECTORY
-; Instfiles page
-!insertmacro MUI_PAGE_INSTFILES
-; Finish page
-!define MUI_FINISHPAGE_SHOWREADME "http://eion.robbmob.com/README.txt"
-!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
-!define MUI_FINISHPAGE_RUN
-!define MUI_FINISHPAGE_RUN_TEXT "Run Pidgin"
-!define MUI_FINISHPAGE_RUN_FUNCTION "RunPidgin"
-!insertmacro MUI_PAGE_FINISH
-
-; Uninstaller pages
-;!insertmacro MUI_UNPAGE_INSTFILES
-
-; Language files
-!insertmacro MUI_LANGUAGE "English"
-
-; MUI end ------
-
-Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
-OutFile "${PRODUCT_NAME}-installer.exe"
-InstallDir "$PROGRAMFILES\Pidgin"
-
-Var "PidginDir"
-
-ShowInstDetails show
-ShowUnInstDetails show
-
-Section "MainSection" SEC01
-
- ;Check for pidgin installation
- Call GetPidginInstPath
-
- SetOverwrite try
-
- SetOutPath "$PidginDir\pixmaps\pidgin"
- File "/oname=protocols\16\skype.png" "icons\16\skype.png"
- File "/oname=protocols\22\skype.png" "icons\22\skype.png"
- File "/oname=protocols\48\skype.png" "icons\48\skype.png"
- File "/oname=protocols\16\skypeout.png" "icons\16\skypeout.png"
- File "/oname=protocols\22\skypeout.png" "icons\22\skypeout.png"
- File "/oname=protocols\48\skypeout.png" "icons\48\skypeout.png"
-
- SetOutPath "$PidginDir\pixmaps\pidgin\emotes\skype"
- File "theme"
-
- SetOutPath "$PidginDir\locale"
- File /nonfatal "/oname=ja\LC_MESSAGES\skype4pidgin.mo" "po\ja.mo"
- File /nonfatal "/oname=de\LC_MESSAGES\skype4pidgin.mo" "po\de.mo"
- File /nonfatal "/oname=fr\LC_MESSAGES\skype4pidgin.mo" "po\fr.mo"
- File /nonfatal "/oname=es\LC_MESSAGES\skype4pidgin.mo" "po\es.mo"
- File /nonfatal "/oname=hu\LC_MESSAGES\skype4pidgin.mo" "po\hu.mo"
- File /nonfatal "/oname=nb\LC_MESSAGES\skype4pidgin.mo" "po\nb.mo"
- File /nonfatal "/oname=it\LC_MESSAGES\skype4pidgin.mo" "po\it.mo"
- File /nonfatal "/oname=ru\LC_MESSAGES\skype4pidgin.mo" "po\ru.mo"
- File /nonfatal "/oname=pl\LC_MESSAGES\skype4pidgin.mo" "po\pl.mo"
- File /nonfatal "/oname=pt\LC_MESSAGES\skype4pidgin.mo" "po\pt.mo"
- File /nonfatal "/oname=en_AU\LC_MESSAGES\skype4pidgin.mo" "po\en_AU.mo"
-
- SetOverwrite try
- copy:
- ClearErrors
- Delete "$PidginDir\plugins\libskype.dll"
- IfErrors dllbusy
- SetOutPath "$PidginDir\plugins"
- File "libskype.dll"
- Goto after_copy
- dllbusy:
- MessageBox MB_RETRYCANCEL "libskype.dll is busy. Please close Pidgin (including tray icon) and try again" IDCANCEL cancel
- Goto copy
- cancel:
- Abort "Installation of skype4pidgin aborted"
- after_copy:
- Call RegisterURIHandler
-
-SectionEnd
-
-Function RegisterURIHandler
- DeleteRegKey HKCR "skype"
- WriteRegStr HKCR "skype" "" "URL:skype"
- WriteRegStr HKCR "skype" "URL Protocol" ""
- WriteRegStr HKCR "skype\DefaultIcon" "" "$PidginDir\pidgin.exe"
- WriteRegStr HKCR "skype\shell" "" ""
- WriteRegStr HKCR "skype\shell\Open" "" ""
- WriteRegStr HKCR "skype\shell\Open\command" "" "$PidginDir\pidgin.exe --protocolhandler=%1"
-FunctionEnd
-
-Function GetPidginInstPath
- Push $0
- ReadRegStr $0 HKLM "Software\pidgin" ""
- IfFileExists "$0\pidgin.exe" cont
- ReadRegStr $0 HKCU "Software\pidgin" ""
- IfFileExists "$0\pidgin.exe" cont
- MessageBox MB_OK|MB_ICONINFORMATION "Failed to find Pidgin installation."
- Abort "Failed to find Pidgin installation. Please install Pidgin first."
- cont:
- StrCpy $PidginDir $0
-FunctionEnd
-
-Function RunPidgin
- ExecShell "" "$PidginDir\pidgin.exe"
-FunctionEnd
-
diff --git a/skype_events.c b/skype_events.c
deleted file mode 100644
index f413eb6..0000000
--- a/skype_events.c
+++ /dev/null
@@ -1,1467 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <ft.h>
-
-void skype_auth_allow(gpointer sender);
-void skype_auth_deny(gpointer sender);
-static gboolean skype_handle_received_message(char *message);
-gint skype_find_filetransfer(PurpleXfer *transfer, char *skypeid);
-void skype_accept_transfer(PurpleXfer *transfer);
-void skype_decline_transfer(PurpleXfer *transfer);
-static SkypeChat *skype_find_chat(const gchar *chat_id, PurpleAccount *this_account);
-gint skype_find_chat_compare_func(PurpleConversation *conv, char *chat_id);
-static void purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatusType status);
-void skype_chat_password_cb(SkypeChat *chat, const gchar *entry);
-void skype_call_accept_cb(gchar *call);
-void skype_call_accept_video_cb(gchar *call);
-void skype_call_reject_cb(gchar *call);
-void skype_call_ignore_cb(gchar *call);
-void skype_call_voicemail_cb(gchar *call);
-void skype_call_forward_cb(gchar *call);
-gboolean skype_sync_skype_close(PurpleConnection *gc);
-gboolean handle_complete_message(int messagenumber);
-
-gboolean skype_update_buddy_status(PurpleBuddy *buddy);
-void skype_update_buddy_alias(PurpleBuddy *buddy);
-void skype_update_buddy_icon(PurpleBuddy *buddy);
-static PurpleAccount *skype_get_account(PurpleAccount *account);
-const char *skype_get_account_username(PurpleAccount *acct);
-gchar *skype_get_user_info(const gchar *username, const gchar *property);
-gchar *skype_strdup_withhtml(const gchar *src);
-void skype_put_buddies_in_groups();
-void skype_get_chatmessage_info(int message);
-void set_skype_buddy_attribute(SkypeBuddy *sbuddy, const gchar *skype_buddy_property, const gchar *value);
-SkypeBuddy *skype_buddy_new(PurpleBuddy *buddy);
-
-char *skype_send_message(char *message, ...);
-//dont use this unless you know what you're doing:
-void skype_send_message_nowait(char *message, ...);
-
-static time_t last_pong = 0;
-static GHashTable *messages_table = NULL;
-static GHashTable *groups_table = NULL;
-
-typedef enum _SkypeMessageType {
- SKYPE_MESSAGE_UNSET = 0,
- SKYPE_MESSAGE_OTHER,
- SKYPE_MESSAGE_TEXT,
- SKYPE_MESSAGE_EMOTE,
- SKYPE_MESSAGE_ADD,
- SKYPE_MESSAGE_LEFT,
- SKYPE_MESSAGE_KICKED,
- SKYPE_MESSAGE_TOPIC,
- SKYPE_MESSAGE_EDITED
-} SkypeMessageType;
-
-typedef struct _SkypeMessage {
- //Required properties
- PurpleAccount *account;
- SkypeMessageType type;
- PurpleMessageFlags flags; //send or recv
- gchar *chatname;
-
- //Optional properties
- gchar *body; //topic, text, emote
- gchar *from_handle; //topic, text, emote, left
- gint timestamp; //text, emote
- gchar **users; //add, kicked
- gchar *leavereason; //left
-} SkypeMessage;
-
-/*
- This function must only be called from the main loop, using purple_timeout_add
-*/
-static gboolean
-skype_handle_received_message(char *message)
-{
- char command[255];
- char **string_parts = NULL;
- PurpleAccount *this_account;
- PurpleConnection *gc;
- const char *my_username;
- PurpleBuddy *buddy;
- SkypeBuddy *sbuddy;
- SkypeChat *chat;
- char *body;
- char *body_html;
- char *msg_num;
- char *sender;
- char *type;
- int mtime;
- char *chatname;
- char *temp;
- //char *chat_type;
- char **chatusers = NULL;
- PurpleXfer *transfer = NULL;
- PurpleConversation *conv = NULL;
- GList *glist_temp = NULL;
- int i;
- PurpleGroup *temp_group;
- //PurpleStatusPrimitive primitive;
- SkypeMessage *skypemessage;
-
- sscanf(message, "%s ", command);
- this_account = skype_get_account(NULL);
- if (this_account == NULL)
- return FALSE;
- gc = purple_account_get_connection(this_account);
- my_username = skype_get_account_username(this_account);
- string_parts = g_strsplit(message, " ", 4);
-
- if (g_str_equal(command, "PONG"))
- {
- last_pong = time(NULL);
- } else if (g_str_equal(command, "USERSTATUS"))
- {
-
- } else if (g_str_equal(command, "CONNSTATUS"))
- {
- if (g_str_equal(string_parts[1], "LOGGEDOUT"))
- {
- //need to make this synchronous :(
- if (gc != NULL)
- purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("\nSkype program closed"));
- //purple_timeout_add(0, (GSourceFunc)skype_sync_skype_close, gc);
- }
- } else if (g_str_equal(command, "USER"))
- {
- buddy = purple_find_buddy(this_account, string_parts[1]);
- if (buddy != NULL)
- {
- sbuddy = buddy->proto_data;
- if (g_str_equal(string_parts[2], "ONLINESTATUS"))
- {
- //the status 'id' is in string_parts[3]
-
- //special cases:
- if (g_str_equal(string_parts[3], "SKYPEOUT"))
- {
- set_skype_buddy_attribute(sbuddy, "MOOD_TEXT", _("SkypeOut"));
- }
- if (g_str_equal(string_parts[3], "UNKNOWN"))
- {
- //user doesn't exist
- purple_blist_remove_buddy(buddy);
- purple_notify_error(gc, "Error", "User does not exist", "The user does not exist in Skype");
- buddy = NULL;
- } else {
- PurpleStatus *status = purple_presence_get_active_status(purple_buddy_get_presence(buddy));
- //Dont say we got their status unless its changed
- if (!status || !g_str_equal(purple_status_get_id(status), string_parts[3]))
- {
- purple_prpl_got_user_status(this_account, string_parts[1], string_parts[3], NULL);
- }
- //dont update buddy icon/mood for offline/skypeout users
- if (!g_str_equal(string_parts[3], "OFFLINE") && !g_str_equal(string_parts[3], "SKYPEOUT"))
- {
- skype_send_message_nowait("GET USER %s MOOD_TEXT", string_parts[1]);
- skype_update_buddy_icon(buddy);
- }
- }
- } else if (g_str_equal(string_parts[2], "DISPLAYNAME"))
- {
- if (strlen(g_strstrip(string_parts[3])))
- purple_blist_server_alias_buddy(buddy, string_parts[3]);
- } else if (g_str_equal(string_parts[2], "FULLNAME"))
- {
- if (strlen(g_strstrip(string_parts[3])) && (!purple_buddy_get_server_alias(buddy) || !strlen(purple_buddy_get_server_alias(buddy))))
- purple_blist_server_alias_buddy(buddy, string_parts[3]);
- set_skype_buddy_attribute(sbuddy, "FULLNAME", string_parts[3]);
- } else if ((g_str_equal(string_parts[2], "BUDDYSTATUS")) &&
- (g_str_equal(string_parts[3], "1")))
- {
- purple_blist_remove_buddy(buddy);
- } else if (g_str_equal(string_parts[2], "MOOD_TEXT"))
- {
- if (sbuddy && (!sbuddy->mood || !g_str_equal(sbuddy->mood, string_parts[3])))
- {
- set_skype_buddy_attribute(sbuddy, string_parts[2], string_parts[3]);
- }
- } else {
- set_skype_buddy_attribute(sbuddy, string_parts[2], string_parts[3]);
- }
- } else if (g_str_equal(string_parts[2], "BUDDYSTATUS"))
- {
- if (g_str_equal(string_parts[3], "3"))
- {
- skype_debug_info("skype", "Buddy %s just got added\n", string_parts[1]);
- //buddy just got added.. handle it
- if (purple_find_buddy(this_account, string_parts[1]) == NULL)
- {
- skype_debug_info("skype", "Buddy not in list\n");
- buddy = purple_buddy_new(this_account, g_strdup(string_parts[1]), NULL);
- skype_buddy_new(buddy);
- if (string_parts[1][0] == '+')
- {
- temp_group = purple_find_group("SkypeOut");
- if (temp_group == NULL)
- {
- temp_group = purple_group_new("SkypeOut");
- purple_blist_add_group(temp_group, NULL);
- }
- } else {
- temp_group = purple_find_group("Skype");
- if (temp_group == NULL)
- {
- temp_group = purple_group_new("Skype");
- purple_blist_add_group(temp_group, NULL);
- }
- }
- purple_blist_add_buddy(buddy, NULL, temp_group, NULL);
- skype_update_buddy_status(buddy);
- skype_update_buddy_alias(buddy);
- purple_prpl_got_user_idle(this_account, buddy->name, FALSE, 0);
- skype_update_buddy_icon(buddy);
- skype_put_buddies_in_groups();
- }
- }
- } else if (g_str_equal(string_parts[2], "RECEIVEDAUTHREQUEST"))
- {
- if (purple_account_get_bool(this_account, "reject_all_auths", FALSE))
- {
- skype_auth_deny(g_strdup(string_parts[1]));
- } else {
- //this event can be fired directly after authorising someone
- temp = skype_get_user_info(string_parts[1], "ISAUTHORIZED");
- if (!g_str_equal(temp, "TRUE") && string_parts[3])
- {
- skype_debug_info("skype", "User %s requested authorisation\n", string_parts[1]);
- purple_account_request_authorization(this_account, string_parts[1], NULL, skype_get_user_info(string_parts[1], "FULLNAME"),
- string_parts[3], (purple_find_buddy(this_account, string_parts[1]) != NULL),
- skype_auth_allow, skype_auth_deny, (gpointer)g_strdup(string_parts[1]));
- }
- g_free(temp);
- }
- }
- } else if (g_str_equal(command, "MESSAGE"))
- {
- if (g_str_equal(string_parts[3], "RECEIVED"))
- {
- msg_num = string_parts[1];
- temp = skype_send_message("GET MESSAGE %s TYPE", msg_num);
- type = g_strdup(&temp[14+strlen(msg_num)]);
- g_free(temp);
- if (g_str_equal(type, "TEXT") ||
- g_str_equal(type, "AUTHREQUEST"))
- {
- temp = skype_send_message("GET MESSAGE %s PARTNER_HANDLE", msg_num);
- sender = g_strdup(&temp[24+strlen(msg_num)]);
- g_free(temp);
- temp = skype_send_message("GET MESSAGE %s BODY", msg_num);
- body = g_strdup(&temp[14+strlen(msg_num)]);
- g_free(temp);
- temp = skype_send_message("GET MESSAGE %s TIMESTAMP", msg_num);
- mtime = atoi(&temp[19+strlen(msg_num)]);
- g_free(temp);
-
- /* Escape the body to HTML */
- body_html = skype_strdup_withhtml(body);
- g_free(body);
-
- if (g_str_equal(type, "TEXT"))
- {
- if (g_str_equal(sender, my_username))
- {
- temp = skype_send_message("GET CHATMESSAGE %s CHATNAME", msg_num);
- chatname = g_strdup(&temp[18+strlen(msg_num)]);
- g_free(temp);
- //skype_debug_info("skype", "Chatname: '%s'\n", chatname);
- chatusers = g_strsplit_set(chatname, "/;", 3);
- if (g_str_equal(&chatusers[0][1], my_username))
- sender = &chatusers[1][1];
- else
- sender = &chatusers[0][1];
- serv_got_im(gc, sender, body_html, PURPLE_MESSAGE_SEND, mtime);
- g_strfreev(chatusers);
- } else {
- serv_got_im(gc, sender, body_html, PURPLE_MESSAGE_RECV, mtime);
- }
- }/* else if (g_str_equal(type, "AUTHREQUEST") && !g_str_equal(sender, my_username))
- {
- skype_debug_info("User %s requested alternate authorisation\n", sender);
- purple_account_request_authorization(this_account, sender, NULL, skype_get_user_info(sender, "FULLNAME"),
- body, (purple_find_buddy(this_account, sender) != NULL),
- skype_auth_allow, skype_auth_deny, (gpointer)g_strdup(sender));
- }*/
-
- skype_send_message("SET MESSAGE %s SEEN", msg_num);
- }
- } else if (g_str_equal(string_parts[3], "SENT"))
- {
- /* mark it as seen, to remove notification from skype ui */
-
- /* dont async this -> infinite loop */
- skype_send_message("SET MESSAGE %s SEEN", string_parts[1]);
-
- temp = skype_send_message("GET MESSAGE %s PARTNER_HANDLE", string_parts[1]);
- sender = g_strdup(&temp[24+strlen(string_parts[1])]);
- g_free(temp);
- purple_signal_emit(purple_conversations_get_handle(), "received-im-ack",
- this_account, sender, string_parts[1]);
- g_free(sender);
- }
- } else if (g_str_equal(command, "CHATMESSAGE"))
- {
- if ((g_str_equal(string_parts[3], "RECEIVED"))
- || (g_str_equal(string_parts[3], "SENT"))
- )
- {
- if (messages_table == NULL)
- {
- messages_table = g_hash_table_new(NULL, NULL);
- }
- skypemessage = g_new0(SkypeMessage, 1);
- skypemessage->account = this_account;
- if (g_str_equal(string_parts[3], "RECEIVED"))
- skypemessage->flags = PURPLE_MESSAGE_RECV;
- else if (g_str_equal(string_parts[3], "SENT"))
- skypemessage->flags = PURPLE_MESSAGE_SEND;
- g_hash_table_insert(messages_table, GINT_TO_POINTER(atoi(string_parts[1])), skypemessage);
-// printf("Message %s has int %d (%d)\n", string_parts[1], atoi(string_parts[1]), GINT_TO_POINTER(atoi(string_parts[1])));
- skype_get_chatmessage_info(atoi(string_parts[1]));
- } else if (g_str_equal(string_parts[2], "TYPE"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- //try to keep these in order of most likely to least likely
- if (g_str_equal(string_parts[3], "SAID") ||
- g_str_equal(string_parts[3], "TEXT"))
- {
- skypemessage->type = SKYPE_MESSAGE_TEXT;
- } else if (g_str_equal(string_parts[3], "EMOTED"))
- {
- skypemessage->type = SKYPE_MESSAGE_EMOTE;
- } else if (g_str_equal(string_parts[3], "ADDEDMEMBERS"))
- {
- skypemessage->type = SKYPE_MESSAGE_ADD;
- } else if (g_str_equal(string_parts[3], "LEFT"))
- {
- skypemessage->type = SKYPE_MESSAGE_LEFT;
- } else if (g_str_equal(string_parts[3], "KICKED") ||
- g_str_equal(string_parts[3], "KICKBANNED"))
- {
- skypemessage->type = SKYPE_MESSAGE_KICKED;
- } else if (g_str_equal(string_parts[3], "SETTOPIC"))
- {
- skypemessage->type = SKYPE_MESSAGE_TOPIC;
- } else {
- skypemessage->type = SKYPE_MESSAGE_OTHER;
- }
- } else {
- skype_debug_info("skype", "Skype message %s not in hashtable\n", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "CHATNAME"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- skypemessage->chatname = g_strdup(string_parts[3]);
- } else {
- skype_debug_info("skype", "Skype message %s not in hashtable\n", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "BODY"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- skypemessage->body = g_strdup(string_parts[3]);
- } else {
- // Could be a message that's been edited
- skype_send_message_nowait("GET CHATMESSAGE %s EDITED_TIMESTAMP", string_parts[1]);
- skype_send_message_nowait("GET CHATMESSAGE %s EDITED_BY", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "FROM_HANDLE"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- skypemessage->from_handle = g_strdup(string_parts[3]);
- } else {
- skype_debug_info("skype", "Skype message %s not in hashtable\n", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "USERS"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- skypemessage->users = g_strsplit(string_parts[3], " ", -1);
- } else {
- skype_debug_info("skype", "Skype message %s not in hashtable\n", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "LEAVEREASON"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- skypemessage->leavereason = g_strdup(string_parts[3]);
- } else {
- skype_debug_info("skype", "Skype message %s not in hashtable\n", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "TIMESTAMP"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage != NULL)
- {
- skypemessage->timestamp = atoi(string_parts[3]);
- } else {
- skype_debug_info("skype", "Skype message %s not in hashtable\n", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "EDITED_BY") ||
- g_str_equal(string_parts[2], "EDITED_TIMESTAMP"))
- {
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (skypemessage == NULL)
- {
- if (messages_table == NULL)
- {
- messages_table = g_hash_table_new(NULL, NULL);
- }
- skypemessage = g_new0(SkypeMessage, 1);
- skypemessage->account = this_account;
- skypemessage->flags = PURPLE_MESSAGE_SYSTEM;
- skypemessage->type = SKYPE_MESSAGE_EDITED;
- g_hash_table_insert(messages_table, GINT_TO_POINTER(atoi(string_parts[1])), skypemessage);
- skype_send_message_nowait("GET CHATMESSAGE %s CHATNAME", string_parts[1]);
- }
-
- if (g_str_equal(string_parts[2], "EDITED_TIMESTAMP"))
- {
- skypemessage->timestamp = atoi(string_parts[3]);
- skype_send_message_nowait("GET CHATMESSAGE %s EDITED_BY", string_parts[1]);
- }
- else if (g_str_equal(string_parts[2], "EDITED_BY"))
- {
- skypemessage->from_handle = g_strdup(string_parts[3]);
- }
- }
-
- handle_complete_message(atoi(string_parts[1]));
- } else if (g_str_equal(command, "CHAT"))
- {
- //find the matching chat to update
- chat = skype_find_chat(string_parts[1], this_account);
- if (g_str_equal(string_parts[2], "STATUS") || g_str_equal(string_parts[2], "TYPE"))
- {
- if (g_str_equal(string_parts[3], "DIALOG") || g_str_equal(string_parts[3], "LEGACY_DIALOG"))
- {
- chat->type = PURPLE_CONV_TYPE_IM;
- } else {
- chat->type = PURPLE_CONV_TYPE_CHAT;
- }
- } else if (g_str_equal(string_parts[2], "MEMBERS"))
- {
- chatusers = g_strsplit(string_parts[3], " ", 0);
- if (chat->members)
- g_strfreev(chat->members);
- chat->members = chatusers;
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- purple_conv_chat_clear_users(PURPLE_CONV_CHAT(chat->conv));
- for (i=0; chatusers[i]; i++)
- {
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(chat->conv), chatusers[i], NULL, PURPLE_CBFLAGS_NONE, FALSE);
- }
- }
- } else if (chat->conv && g_str_equal(string_parts[2], "FRIENDLYNAME"))
- {
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- purple_conversation_set_title(chat->conv, string_parts[3]);
- purple_conversation_update(chat->conv, PURPLE_CONV_UPDATE_TITLE);
- }
- } else if (chat->conv && g_str_equal(string_parts[2], "TOPIC"))
- {
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- purple_conv_chat_set_topic(PURPLE_CONV_CHAT(chat->conv), my_username, string_parts[3]);
- purple_conversation_update(chat->conv, PURPLE_CONV_UPDATE_TOPIC);
- }
- } else if (chat->conv && g_str_equal(string_parts[2], "MEMBEROBJECTS"))
- {
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- chatusers = g_strsplit(string_parts[3], ", ", 0);
- for (i=0; chatusers[i]; i++)
- {
- temp = skype_send_message("GET CHATMEMBER %s IDENTITY", chatusers[i]);
- sender = g_strdup(&temp[21 + strlen(chatusers[i])]);
- g_free(temp);
- temp = skype_send_message("GET CHATMEMBER %s ROLE", chatusers[i]);
- type = g_strdup(&temp[17 + strlen(chatusers[i])]);
- g_free(temp);
-
- if (g_str_equal(type, "USER")) {
- purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), sender, PURPLE_CBFLAGS_VOICE);
- } else if (g_str_equal(type, "HELPER")) {
- purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), sender, PURPLE_CBFLAGS_HALFOP);
- } else if (g_str_equal(type, "MASTER")) {
- purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), sender, PURPLE_CBFLAGS_OP);
- } else if (g_str_equal(type, "CREATOR")) {
- purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), sender, PURPLE_CBFLAGS_FOUNDER);
- } else {
- purple_conv_chat_user_set_flags(PURPLE_CONV_CHAT(chat->conv), sender, PURPLE_CBFLAGS_NONE);
- }
-
- g_free(sender);
- g_free(type);
- }
- }
- } else if (chat->name && g_str_equal(string_parts[2], "MYSTATUS") && g_str_equal(string_parts[3], "PASSWORD_REQUIRED"))
- {
- purple_request_input(gc, _("Incorrect password"), _("Password"), chat->name, "", FALSE,
- TRUE, NULL, _("OK"), G_CALLBACK(skype_chat_password_cb), _("Cancel"), NULL,
- this_account, NULL, chat->conv, chat);
- }
- chat = skype_find_chat(string_parts[1], this_account);
- } else if (g_str_equal(command, "FILETRANSFER"))
- {
- //lookup current file transfers to see if there's already one there
- glist_temp = g_list_find_custom(purple_xfers_get_all(),
- string_parts[1],
- (GCompareFunc)skype_find_filetransfer);
- if (glist_temp == NULL && g_str_equal(string_parts[2], "TYPE"))
- {
- temp = skype_send_message("GET FILETRANSFER %s PARTNER_HANDLE", string_parts[1]);
- sender = g_strdup(&temp[29+strlen(string_parts[1])]);
- g_free(temp);
- if (g_str_equal(string_parts[3], "INCOMING"))
- {
- transfer = purple_xfer_new(this_account, PURPLE_XFER_RECEIVE, sender);
- } else {
- transfer = purple_xfer_new(this_account, PURPLE_XFER_SEND, sender);
- }
- transfer->data = g_strdup(string_parts[1]);
- purple_xfer_set_init_fnc(transfer, skype_accept_transfer);
- purple_xfer_set_request_denied_fnc(transfer, skype_decline_transfer);
- temp = skype_send_message("GET FILETRANSFER %s FILENAME", string_parts[1]);
- skype_debug_info("skype", "Filename: '%s'\n", &temp[23+strlen(string_parts[1])]);
- purple_xfer_set_filename(transfer, g_strdup(&temp[23+strlen(string_parts[1])]));
- g_free(temp);
- temp = skype_send_message("GET FILETRANSFER %s FILEPATH", string_parts[1]);
- if (strlen(&temp[23+strlen(string_parts[1])]))
- purple_xfer_set_local_filename(transfer, g_strdup(&temp[23+strlen(string_parts[1])]));
- else
- purple_xfer_set_local_filename(transfer, purple_xfer_get_filename(transfer));
- g_free(temp);
- temp = skype_send_message("GET FILETRANSFER %s FILESIZE", string_parts[1]);
- purple_xfer_set_size(transfer, atol(&temp[23+strlen(string_parts[1])]));
- g_free(temp);
- purple_xfer_add(transfer);
- } else if (glist_temp != NULL) {
- transfer = glist_temp->data;
- }
- if (transfer != NULL)
- {
- /*if (g_str_equal(string_parts[2], "TYPE"))
- {
- if (g_str_equal(string_parts[3], "INCOMING"))
- {
- transfer->type = PURPLE_XFER_RECEIVE;
- } else {
- transfer->type = PURPLE_XFER_SEND;
- }
- } else if (g_str_equal(string_parts[2], "PARTNER_HANDLE"))
- {
- transfer->who = g_strdup(string_parts[3]);
- } else*/ if (g_str_equal(string_parts[2], "FILENAME"))
- {
- purple_xfer_set_filename(transfer, string_parts[3]);
- } else if (g_str_equal(string_parts[2], "FILEPATH"))
- {
- if (strlen(string_parts[3]))
- purple_xfer_set_local_filename(transfer, string_parts[3]);
- } else if (g_str_equal(string_parts[2], "STATUS"))
- {
- if (g_str_equal(string_parts[3], "NEW") ||
- g_str_equal(string_parts[3], "WAITING_FOR_ACCEPT"))
- {
- //Skype API doesn't let us accept transfers
- //purple_xfer_request(transfer);
- if (purple_xfer_get_type(transfer) == PURPLE_XFER_RECEIVE)
- {
-# ifndef __APPLE__
- skype_send_message_nowait("OPEN FILETRANSFER");
-# else
- purple_notify_info(this_account, _("File Transfers"), g_strdup_printf(_("%s wants to send you a file"), purple_xfer_get_remote_user(transfer)), NULL);
-# endif
- purple_xfer_conversation_write(transfer, g_strdup_printf(_("%s wants to send you a file"), purple_xfer_get_remote_user(transfer)), FALSE);
- }
- purple_xfer_set_status(transfer, PURPLE_XFER_STATUS_NOT_STARTED);
- } else if (g_str_equal(string_parts[3], "COMPLETED"))
- {
- purple_xfer_set_completed(transfer, TRUE);
- } else if (g_str_equal(string_parts[3], "CONNECTING") ||
- g_str_equal(string_parts[3], "TRANSFERRING") ||
- g_str_equal(string_parts[3], "TRANSFERRING_OVER_RELAY"))
- {
- purple_xfer_set_status(transfer, PURPLE_XFER_STATUS_STARTED);
- transfer->start_time = time(NULL);
- } else if (g_str_equal(string_parts[3], "CANCELLED"))
- {
- //transfer->end_time = time(NULL);
- //transfer->bytes_remaining = 0;
- //purple_xfer_set_status(transfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);
- purple_xfer_cancel_local(transfer);
- }/* else if (g_str_equal(string_parts[3], "FAILED"))
- {
- //transfer->end_time = time(NULL);
- //purple_xfer_set_status(transfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
- purple_xfer_cancel_remote(transfer);
- }*/
- purple_xfer_update_progress(transfer);
- } else if (g_str_equal(string_parts[2], "STARTTIME"))
- {
- transfer->start_time = atol(string_parts[3]);
- purple_xfer_update_progress(transfer);
- /*} else if (g_str_equal(string_parts[2], "FINISHTIME"))
- {
- if (!g_str_equal(string_parts[3], "0"))
- transfer->end_time = atol(string_parts[3]);
- purple_xfer_update_progress(transfer);*/
- } else if (g_str_equal(string_parts[2], "BYTESTRANSFERRED"))
- {
- purple_xfer_set_bytes_sent(transfer, atol(string_parts[3]));
- purple_xfer_update_progress(transfer);
- } else if (g_str_equal(string_parts[2], "FILESIZE"))
- {
- purple_xfer_set_size(transfer, atol(string_parts[3]));
- } else if (g_str_equal(string_parts[2], "FAILUREREASON") &&
- !g_str_equal(string_parts[3], "UNKNOWN"))
- {
- temp = NULL;
- if (g_str_equal(string_parts[3], "SENDER_NOT_AUTHORIZED"))
- {
- temp = g_strdup(_("Not Authorized"));
- } else if (g_str_equal(string_parts[3], "REMOTELY_CANCELLED"))
- {
- purple_xfer_cancel_remote(transfer);
- purple_xfer_update_progress(transfer);
- } else if (g_str_equal(string_parts[3], "FAILED_READ"))
- {
- temp = g_strdup(_("Read error"));
- } else if (g_str_equal(string_parts[3], "FAILED_REMOTE_READ"))
- {
- temp = g_strdup(_("Read error"));
- } else if (g_str_equal(string_parts[3], "FAILED_WRITE"))
- {
- temp = g_strdup(_("Write error"));
- } else if (g_str_equal(string_parts[3], "FAILED_REMOTE_WRITE"))
- {
- temp = g_strdup(_("Write error"));
- } else if (g_str_equal(string_parts[3], "REMOTE_DOES_NOT_SUPPORT_FT"))
- {
- temp = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), transfer->who);
- } else if (g_str_equal(string_parts[3], "REMOTE_OFFLINE_FOR_TOO_LONG"))
- {
- temp = g_strdup(_("Recipient Unavailable"));
- }
- if (temp && strlen(temp))
- {
- purple_xfer_error(transfer->type, this_account, transfer->who, temp);
- }
- g_free(temp);
- }
- }
- } else if (g_str_equal(command, "WINDOWSTATE"))
- {
- if (g_str_equal(string_parts[1], "HIDDEN"))
- {
- skype_send_message_nowait("SET SILENT_MODE ON");
- }
- } else if (g_str_equal(command, "PROFILE"))
- {
- if (g_str_equal(string_parts[1], "FULLNAME"))
- {
- temp = g_strconcat(string_parts[2], " ", string_parts[3], NULL);
- //this is the full name of the logged in user... useful for the account name
- g_free(temp);
- }
- } else if (g_str_equal(command, "CURRENTUSERHANDLE"))
- {
- //the currently logged in username is at string_parts[1]
- } else if (g_str_equal(command, "GROUPS"))
- {
- if (groups_table == NULL)
- groups_table = g_hash_table_new(NULL, NULL);
- chatusers = g_strsplit(strchr(message, ' ')+1, ", ", 0);
- for(i = 0; chatusers[i]; i++)
- {
- skype_send_message_nowait("GET GROUP %s DISPLAYNAME", chatusers[i]);
- }
- g_strfreev(chatusers);
- } else if (g_str_equal(command, "GROUP"))
- {
- if (groups_table == NULL)
- groups_table = g_hash_table_new(NULL, NULL);
- //TODO Handle Group stuff:
- // Messages from skype to move users in to/out of a group
- if (g_str_equal(string_parts[2], "DISPLAYNAME"))
- {
- if (string_parts[3] && *string_parts[3])
- {
- temp_group = purple_find_group(string_parts[3]);
- if (!temp_group)
- {
- temp_group = purple_group_new(string_parts[3]);
- skype_debug_info("skype", "Creating group %s\n", string_parts[3]);
- purple_blist_add_group(temp_group, NULL);
- }
- purple_blist_node_set_int(&temp_group->node, "skype_group_number", atoi(string_parts[1]));
- g_hash_table_insert(groups_table, GINT_TO_POINTER(atoi(string_parts[1])), temp_group);
- skype_send_message_nowait("GET GROUP %s USERS", string_parts[1]);
- } else {
- // Remove blank groups
- skype_send_message_nowait("DELETE GROUP %s", string_parts[1]);
- }
- } else if (g_str_equal(string_parts[2], "USERS"))
- {
- temp_group = g_hash_table_lookup(groups_table, GINT_TO_POINTER(atoi(string_parts[1])));
- if (temp_group)
- {
- if (string_parts[3] && *string_parts[3])
- {
- chatusers = g_strsplit(string_parts[3], ", ", -1);
- for (i = 0; chatusers[i]; i++)
- {
- buddy = purple_find_buddy(this_account, chatusers[i]);
- if (buddy && temp_group != purple_buddy_get_group(buddy))
- purple_blist_add_buddy(buddy, NULL, temp_group, NULL);
- }
- g_strfreev(chatusers);
- } else {
- // Remove empty groups
- skype_send_message_nowait("DELETE GROUP %s", string_parts[1]);
- }
- } else {
- skype_send_message_nowait("GET GROUP %s DISPLAYNAME", string_parts[1]);
- }
- }
- } else if (g_str_equal(command, "APPLICATION") &&
- g_str_equal(string_parts[1], "libpurple_typing"))
- {
- if (g_str_equal(string_parts[2], "DATAGRAM"))
- {
- chatusers = g_strsplit_set(string_parts[3], ": ", 3);
- sender = chatusers[0];
- temp = chatusers[2];
- if (sender != NULL && temp != NULL)
- {
- sender = g_strdup(sender);
- temp = g_strdup(temp);
- if (g_str_equal(temp, "PURPLE_NOT_TYPING"))
- serv_got_typing(gc, sender, 10, PURPLE_NOT_TYPING);
- else if (g_str_equal(temp, "PURPLE_TYPING"))
- serv_got_typing(gc, sender, 10, PURPLE_TYPING);
- else if (g_str_equal(temp, "PURPLE_TYPED"))
- serv_got_typing(gc, sender, 10, PURPLE_TYPED);
- g_free(sender);
- g_free(temp);
- }
- g_strfreev(chatusers);
- } else if (g_str_equal(string_parts[2], "STREAMS"))
- {
- chatusers = g_strsplit_set(string_parts[3], ": ", -1);
- for(i=0; chatusers[i] && chatusers[i+1]; i+=2)
- {
- temp = g_strconcat("stream-", chatusers[i], NULL);
- purple_account_set_string(this_account, temp, chatusers[i+1]);
- g_free(temp);
- }
- g_strfreev(chatusers);
- }
-#ifndef INSTANTBIRD
- } else if (purple_media_manager_get() && g_str_equal(command, "CALL"))
- {
- if (g_str_equal(string_parts[2], "STATUS"))
- {
- if (g_str_equal(string_parts[3], "RINGING"))
- {
- temp = skype_send_message("GET CALL %s TYPE", string_parts[1]);
- type = g_new0(gchar, 9);
- sscanf(temp, "CALL %*s TYPE %[^_]", type);
- g_free(temp);
- if (g_str_equal(type, "INCOMING"))
- skype_handle_incoming_call(gc, string_parts[1]);
- } else if (g_str_equal(string_parts[3], "FINISHED") ||
- g_str_equal(string_parts[3], "CANCELLED") ||
- g_str_equal(string_parts[3], "REFUSED") ||
- g_str_equal(string_parts[3], "MISSED") ||
- g_str_equal(string_parts[3], "FAILED"))
- {
- skype_handle_call_got_ended(string_parts[1]);
- }
- }
-//#else
- } else if (!purple_media_manager_get() && g_str_equal(command, "CALL"))
- {
- if (g_str_equal(string_parts[2], "STATUS"))
- {
- if (g_str_equal(string_parts[3], "RINGING"))
- {
- temp = skype_send_message("GET CALL %s TYPE", string_parts[1]);
- type = g_new0(gchar, 9);
- sscanf(temp, "CALL %*s TYPE %[^_]", type);
- g_free(temp);
- if (g_str_equal(type, "INCOMING"))
- {
- temp = skype_send_message("GET CALL %s PARTNER_HANDLE", string_parts[1]);
- sender = g_strdup(&temp[21+strlen(string_parts[1])]);
- g_free(temp);
- temp = skype_send_message("GET CALL %s PARTNER_DISPNAME", string_parts[1]);
- chatname = g_strdup(&temp[23+strlen(string_parts[1])]);
- g_free(temp);
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sender, this_account);
-
- if (conv != NULL)
- purple_conversation_write(conv, sender, _("Call started"), PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL));
-
- if (chatname && *chatname)
- {
- temp = g_strdup_printf("%s (%s)", chatname, sender);
- g_free(chatname);
- chatname = temp;
- temp = g_strdup_printf(_("%s is calling you."), chatname);
- } else {
- temp = g_strdup_printf(_("%s is calling you."), sender);
- }
-
- purple_request_action(gc, _("Incoming Call"), temp,
- _("Do you want to accept their call?"),
- -1, this_account, sender, conv, g_strdup(string_parts[1]), 3,
- _("_Accept"), G_CALLBACK(skype_call_accept_cb),
- _("Accept with Video"), G_CALLBACK(skype_call_accept_video_cb),
- _("_Reject"), G_CALLBACK(skype_call_reject_cb),
- _("_Ignore"), G_CALLBACK(skype_call_ignore_cb),
- _("Send to _Voicemail"), G_CALLBACK(skype_call_voicemail_cb),
- _("_Forward"), G_CALLBACK(skype_call_forward_cb));
- g_free(temp);
- g_free(chatname);
- g_free(sender);
- }
- g_free(type);
- } else if (g_str_equal(string_parts[3], "INPROGRESS") ||
- g_str_equal(string_parts[3], "MISSED"))
-
- {
- purple_request_close_with_handle(gc);
- }
- }
-#endif
- } else if (g_str_equal(command, "SMS"))
- {
- skype_debug_info("skype", "SMS lookup table %x\n", sms_convo_link_table);
- if (sms_convo_link_table != NULL)
- {
- temp = g_hash_table_lookup(sms_convo_link_table, string_parts[1]);
- skype_debug_info("skype", "Found mobile %s from SMS number %s\n", temp?temp:"null", string_parts[1]);
- conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, temp, this_account);
- skype_debug_info("skype", "Found conv %d\n", conv);
- if (conv)
- {
- if (g_str_equal(string_parts[2], "STATUS"))
- {
- temp = g_strconcat(_("Status: "), string_parts[3], NULL);
- purple_conversation_write(conv, NULL, temp, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
- g_free(temp);
- } else if (g_str_equal(string_parts[2], "FAILUREREASON"))
- {
- temp = g_strconcat(_("Failure Reason: "), string_parts[3], NULL);
- purple_conversation_write(conv, NULL, temp, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
- g_free(temp);
- skype_send_message_nowait("SET SMS %s SEEN", string_parts[1]);
- } else if (g_str_equal(string_parts[2], "PRICE"))
- {
- if (atoi(string_parts[3]) > 0 &&
- purple_conversation_get_data(conv, "price_precision") &&
- purple_conversation_get_data(conv, "price_currency"))
- {
- int exponenet = 1;
- double d;
- for (i = atoi(purple_conversation_get_data(conv, "price_precision"));
- i > 0; i--)
- {
- exponenet *= 10;
- }
- d = atof(string_parts[3]) / exponenet;
- temp = g_strdup_printf("%s %s %f", _("Price: "),
- (char*)purple_conversation_get_data(conv, "price_currency"),
- d);
- purple_conversation_write(conv, NULL, temp, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
- g_free(temp);
- }
- } else if (g_str_equal(string_parts[2], "PRICE_PRECISION"))
- {
- purple_conversation_set_data(conv, "price_precision", g_strdup(string_parts[3]));
- } else if (g_str_equal(string_parts[2], "PRICE_CURRENCY"))
- {
- purple_conversation_set_data(conv, "price_currency", g_strdup(string_parts[3]));
- }
- }
- }
- } else if (g_str_equal(command, "MESSAGES") || g_str_equal(command, "CHATMESSAGES"))
- {
- //MISSEDCHATMESSAGES response - workaround for Skype 6 and higher
- gchar *messages_start = strchr(message, ' ');
- if (messages_start != NULL)
- {
- gchar **messages = g_strsplit(messages_start + 1, ", ", 0);
- for (i = 0; messages[i]; i++)
- {
- skype_send_message_nowait("GET CHATMESSAGE %s STATUS", messages[i]);
- }
- g_strfreev(messages);
- }
- }
- if (string_parts)
- {
- g_strfreev(string_parts);
- }
- g_free(message);
- return FALSE;
-}
-
-void
-skype_chat_password_cb(SkypeChat *chat, const gchar *entry)
-{
- if (chat && chat->name)
- skype_send_message_nowait("ALTER CHAT %s ENTERPASSWORD %s", chat->name, entry);
-}
-
-void
-skype_call_accept_cb(gchar *call)
-{
- skype_send_message_nowait("ALTER CALL %s ANSWER", call);
- skype_send_message_nowait("SET CALL %s SEEN", call);
- skype_send_message_nowait("CLEAR CALLHISTORY INCOMING");
- skype_send_message_nowait("SEARCH MISSEDCALLS");
- g_free(call);
-}
-
-gboolean
-skype_call_accept_start_video(gpointer callptr)
-{
- gchar *call = callptr;
-
- skype_send_message_nowait("ALTER CALL %s START_VIDEO_SEND", call);
- skype_send_message_nowait("ALTER CALL %s START_VIDEO_RECEIVE", call);
-
- g_free(call);
-
- return FALSE;
-}
-
-void
-skype_call_accept_video_cb(gchar *call)
-{
- skype_send_message("ALTER CALL %s ANSWER", call);
- skype_send_message("SET CALL %s SEEN", call);
- skype_send_message("CLEAR CALLHISTORY INCOMING");
- skype_send_message_nowait("SEARCH MISSEDCALLS");
-
- purple_timeout_add_seconds(3, skype_call_accept_start_video, call);
-}
-
-void
-skype_call_reject_cb(gchar *call)
-{
- skype_send_message_nowait("ALTER CALL %s END HANGUP", call);
- skype_send_message_nowait("ALTER CALL %s HANGUP", call);
- skype_send_message_nowait("SET CALL %s SEEN", call);
- skype_send_message_nowait("CLEAR CALLHISTORY INCOMING");
- skype_send_message_nowait("SEARCH MISSEDCALLS");
- g_free(call);
-}
-
-void
-skype_call_ignore_cb(gchar *call)
-{
- skype_send_message_nowait("SET CALL %s SEEN", call);
- skype_send_message_nowait("CLEAR CALLHISTORY INCOMING");
- skype_send_message_nowait("SEARCH MISSEDCALLS");
- g_free(call);
-}
-
-void
-skype_call_voicemail_cb(gchar *call)
-{
- skype_send_message_nowait("ALTER CALL %s END REDIRECT_TO_VOICEMAIL", call);
- skype_send_message_nowait("SET CALL %s SEEN", call);
- skype_send_message_nowait("CLEAR CALLHISTORY INCOMING");
- skype_send_message_nowait("SEARCH MISSEDCALLS");
- g_free(call);
-}
-
-void
-skype_call_forward_cb(gchar *call)
-{
- skype_send_message_nowait("ALTER CALL %s END FORWARD_CALL", call);
- skype_send_message_nowait("SET CALL %s SEEN", call);
- skype_send_message_nowait("CLEAR CALLHISTORY INCOMING");
- skype_send_message_nowait("SEARCH MISSEDCALLS");
- g_free(call);
-}
-
-void
-skype_auth_allow(gpointer sender)
-{
- skype_send_message("SET USER %s ISAUTHORIZED TRUE", sender);
- g_free(sender);
-}
-
-void
-skype_auth_deny(gpointer sender)
-{
- skype_send_message("SET USER %s ISAUTHORIZED FALSE", sender);
- g_free(sender);
-}
-
-gint
-skype_find_filetransfer(PurpleXfer *transfer, char *skypeid)
-{
- if (transfer == NULL || transfer->data == NULL || skypeid == NULL)
- return -1;
- return strcmp(transfer->data, skypeid);
-}
-
-void
-skype_accept_transfer(PurpleXfer *transfer)
-{
- //can't accept transfers
-}
-
-void
-skype_decline_transfer(PurpleXfer *transfer)
-{
- //can't reject transfers
-}
-
-static SkypeChat*
-skype_find_chat(const gchar *chat_id, PurpleAccount *this_account)
-{
- SkypeChat *chat;
- int i;
-
- if (chat_id == NULL)
- return NULL;
-
- g_static_mutex_lock(&chat_link_mutex);
- if(chat_link_table == NULL)
- {
- chat_link_table = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- chat = g_hash_table_lookup(chat_link_table, chat_id);
- if (chat == NULL)
- {
- chat = g_new0(SkypeChat, 1);
- chat->name = g_strdup(chat_id);
- chat->account = this_account;
- g_hash_table_insert(chat_link_table, chat->name, chat);
-
- skype_send_message_nowait("GET CHAT %s STATUS", chat_id);
- skype_send_message_nowait("GET CHAT %s TYPE", chat_id);
- skype_send_message_nowait("GET CHAT %s MEMBERS", chat_id);
- skype_send_message_nowait("GET CHAT %s FRIENDLYNAME", chat_id);
- skype_send_message_nowait("GET CHAT %s TOPIC", chat_id);
- skype_send_message_nowait("GET CHAT %s MEMBEROBJECTS", chat_id);
- }
- g_static_mutex_unlock(&chat_link_mutex);
-
- chat->conv = NULL;
-
- if (chat->type)
- {
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- chat->conv = purple_find_conversation_with_account(chat->type, chat_id, this_account);
- if (!chat->conv)
- {
- chat->prpl_chat_id = g_str_hash(chat_id);
- chat->conv = serv_got_joined_chat(this_account->gc, chat->prpl_chat_id, chat_id);
- }
- } else if (chat->type == PURPLE_CONV_TYPE_IM)
- {
- if (!chat->partner_handle && chat->members)
- {
- for (i=0; chat->members[i]; i++)
- {
- if (*chat->members[i] != '\0' && !g_str_equal(chat->members[i], skype_get_account_username(chat->account)))
- {
- chat->partner_handle = g_strdup(chat->members[i]);
- break;
- }
- }
- }
- if (chat->partner_handle)
- {
- chat->conv = purple_find_conversation_with_account(chat->type, chat->partner_handle, chat->account);
- if (!chat->conv)
- chat->conv = purple_conversation_new(chat->type, chat->account, chat->partner_handle);
- }
- }
- if (chat->conv)
- purple_conversation_set_data(chat->conv, "chat_id", g_strdup(chat_id));
- }
-
-
- return chat;
-}
-
-gint
-skype_find_chat_compare_func(PurpleConversation *conv, char *chat_id)
-{
- char *lookup;
- if (chat_id == NULL || conv == NULL || conv->data == NULL)
- return -1;
- lookup = purple_conversation_get_data(conv, "chat_id");
- if (lookup == NULL)
- return -1;
- return strcmp(lookup, chat_id);
-}
-
-/* Since this function isn't public, and we need it to be, redefine it here */
-static void
-purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatusType status)
-{
- g_return_if_fail(xfer != NULL);
-
- if (xfer->status == status)
- return;
-
- xfer->status = status;
-
- if(xfer->type == PURPLE_XFER_SEND) {
- switch(status) {
- case PURPLE_XFER_STATUS_ACCEPTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-accept", xfer);
- break;
- case PURPLE_XFER_STATUS_STARTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-start", xfer);
- break;
- case PURPLE_XFER_STATUS_DONE:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-complete", xfer);
- break;
- case PURPLE_XFER_STATUS_CANCEL_LOCAL:
- case PURPLE_XFER_STATUS_CANCEL_REMOTE:
- purple_signal_emit(purple_xfers_get_handle(), "file-send-cancel", xfer);
- break;
- default:
- break;
- }
- } else if(xfer->type == PURPLE_XFER_RECEIVE) {
- switch(status) {
- case PURPLE_XFER_STATUS_ACCEPTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-accept", xfer);
- break;
- case PURPLE_XFER_STATUS_STARTED:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-start", xfer);
- break;
- case PURPLE_XFER_STATUS_DONE:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-complete", xfer);
- break;
- case PURPLE_XFER_STATUS_CANCEL_LOCAL:
- case PURPLE_XFER_STATUS_CANCEL_REMOTE:
- purple_signal_emit(purple_xfers_get_handle(), "file-recv-cancel", xfer);
- break;
- default:
- break;
- }
- }
-}
-
-
-gboolean
-skype_sync_skype_close(PurpleConnection *gc)
-{
- if (gc != NULL)
- purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("\nSkype program closed"));
- return FALSE;
-}
-
-gboolean
-handle_complete_message(int messagenumber)
-{
- SkypeMessage *skypemessage = NULL;
- SkypeChat *chat = NULL;
- PurpleBuddy *buddy = NULL;
- gchar *body_html = NULL;
- xmlnode *xmlblob, *nodi;
- int i;
-
- if (messages_table == NULL)
- return FALSE;
-
- skypemessage = g_hash_table_lookup(messages_table, GINT_TO_POINTER(messagenumber));
- if (skypemessage == NULL)
- return FALSE; //Message no longer exists, must have delt with it already
-
- if (!skypemessage->chatname || !skypemessage->type || !skypemessage->account)
- return FALSE; //Haven't finished filling in all the required details
-
- chat = skype_find_chat(skypemessage->chatname, skypemessage->account);
- if (!chat->type)
- {
- skype_debug_info("skype", "Chat %s has no type\n", skypemessage->chatname);
- //dont know where to put this message
- skype_send_message_nowait("GET CHAT %s STATUS", skypemessage->chatname);
- skype_send_message_nowait("GET CHAT %s TYPE", skypemessage->chatname);
- chat->type_request_count++;
- //Only try a maximum of 100 times to prevent an infinite loop (in case the chat name is unknown)
- if (chat->type_request_count < 100)
- {
- //just wait for a second for the chat to be updated
- purple_timeout_add_seconds(1, (GSourceFunc)handle_complete_message, GINT_TO_POINTER(messagenumber));
- }
- return FALSE;
- }
-
- switch(skypemessage->type)
- {
- case SKYPE_MESSAGE_UNSET:
- return FALSE;
- case SKYPE_MESSAGE_EMOTE:
- if (!skypemessage->body)
- return FALSE;
- body_html = g_strdup_printf("/me %s", skypemessage->body);
- g_free(skypemessage->body);
- skypemessage->body = body_html;
- //set it to be text so that we dont do it again
- skypemessage->type = SKYPE_MESSAGE_TEXT;
- //fallthrough intentional
- case SKYPE_MESSAGE_OTHER:
- //'other' type of message is generally an auth request
- //Check that it's not an xml blob
- if (!skypemessage->body)
- return FALSE;
- xmlblob = xmlnode_from_str(skypemessage->body, -1);
- if (xmlblob)
- {
- if (g_str_equal(xmlblob->name, "partlist"))
- {
- for(nodi = xmlnode_get_child(xmlblob, "part");
- nodi;
- nodi = xmlnode_get_next_twin(nodi))
- {
- if (g_str_equal(xmlnode_get_attrib(nodi, "identity"), skype_get_account_username(skypemessage->account)))
- {
- nodi = xmlnode_get_child(nodi, "duration");
- body_html = xmlnode_get_data(nodi);
- if (body_html)
- {
- g_free(skypemessage->body);
- skypemessage->body = g_strdup_printf(_("Call ended after %s seconds"), body_html);
- g_free(body_html);
- skypemessage->type = SKYPE_MESSAGE_TEXT;
- }
- break;
- }
- }
- if (skypemessage->type == SKYPE_MESSAGE_OTHER)
- {
- //Haven't found any 'duration'
- g_free(skypemessage->body);
- skypemessage->body = g_strdup(_("Call ended"));
- skypemessage->type = SKYPE_MESSAGE_TEXT;
- }
- }
- xmlnode_free(xmlblob);
- }
- case SKYPE_MESSAGE_TEXT:
- if (!skypemessage->body || !skypemessage->from_handle || !skypemessage->timestamp)
- return FALSE;
- if (!skypemessage->account || !skypemessage->account->gc)
- return FALSE;
- body_html = skype_strdup_withhtml(skypemessage->body);
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- if (skypemessage->flags != PURPLE_MESSAGE_SEND)
- {
- if (chat->prpl_chat_id)
- i = chat->prpl_chat_id;
- else
- i = g_str_hash(chat->name);
- serv_got_chat_in(skypemessage->account->gc, i, skypemessage->from_handle, skypemessage->flags, body_html, skypemessage->timestamp);
- }
- } else if (chat->type == PURPLE_CONV_TYPE_IM)
- {
- if (skypemessage->flags != PURPLE_MESSAGE_SEND)
- {
- PurpleAccount *acct = skypemessage->account;
- if (!g_str_equal(skypemessage->from_handle, skype_get_account_username(acct)))
- {
- serv_got_im(acct->gc, skypemessage->from_handle, body_html, skypemessage->flags, skypemessage->timestamp);
- } else if (chat->partner_handle)
- {
- //if we're here, then we're receiving a message that we sent from a different computer
- serv_got_im(acct->gc, chat->partner_handle, body_html, PURPLE_MESSAGE_SEND, skypemessage->timestamp);
- } else {
- //use the chat name to work out who it came from
- //in format #username1/$username2;junktext for IM's
- char *start, *end;
- start = strchr(skypemessage->chatname, '#');
- if (start)
- {
- start += 1;
- end = strchr(start, '/');
- if (end)
- {
- start = g_strndup(start, end-start);
- if (!g_str_equal(skype_get_account_username(acct), start))
- {
- serv_got_im(acct->gc, start, body_html, PURPLE_MESSAGE_SEND, skypemessage->timestamp);
- g_free(start);
- start = (char *) 1;
- }
- else
- {
- g_free(start);
- start = NULL;
- }
- } else {
- start = NULL;
- }
- }
- if (!start)
- {
- start = strchr(skypemessage->chatname, '$');
- if (start)
- {
- start += 1;
- end = strchr(start, ';');
- if (end)
- {
- start = g_strndup(start, end-start);
- if (!g_str_equal(skype_get_account_username(acct), start))
- {
- serv_got_im(acct->gc, start, body_html, PURPLE_MESSAGE_SEND, skypemessage->timestamp);
- g_free(start);
- }
- }
- }
- }
- }
- } else {
- gchar *msg_num = g_strdup_printf("%d", messagenumber);
- purple_signal_emit(purple_conversations_get_handle(), "received-im-ack",
- skypemessage->account, skypemessage->from_handle, msg_num);
- g_free(msg_num);
- }
- }
- break;
- case SKYPE_MESSAGE_LEFT:
- if (!skypemessage->from_handle || !skypemessage->leavereason)
- return FALSE;
- if (chat->conv && chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- if (g_str_equal(skypemessage->from_handle, skype_get_account_username(skypemessage->account)))
- purple_conv_chat_left(PURPLE_CONV_CHAT(chat->conv));
- purple_conv_chat_remove_user(PURPLE_CONV_CHAT(chat->conv), skypemessage->from_handle, skypemessage->leavereason);
- }
- break;
- case SKYPE_MESSAGE_ADD:
- if (!skypemessage->users)
- return FALSE;
- if (chat->conv && chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- for (i=0; skypemessage->users[i]; i++)
- if (!purple_conv_chat_find_user(PURPLE_CONV_CHAT(chat->conv), skypemessage->users[i]))
- purple_conv_chat_add_user(PURPLE_CONV_CHAT(chat->conv), skypemessage->users[i], NULL, PURPLE_CBFLAGS_NONE, TRUE);
- }
- break;
- case SKYPE_MESSAGE_KICKED:
- if (!skypemessage->users)
- return FALSE;
- if (chat->conv && chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- for (i=0; skypemessage->users[i]; i++)
- {
- if (skypemessage->from_handle)
- purple_conv_chat_remove_user(PURPLE_CONV_CHAT(chat->conv), skypemessage->users[i], g_strdup_printf("Kicked by %s", skypemessage->from_handle));
- else
- purple_conv_chat_remove_user(PURPLE_CONV_CHAT(chat->conv), skypemessage->users[i], g_strdup("Kicked"));
- }
- }
- break;
- case SKYPE_MESSAGE_TOPIC:
- if (!skypemessage->body || !skypemessage->from_handle)
- return FALSE;
- if (chat->conv && chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- purple_conv_chat_set_topic(PURPLE_CONV_CHAT(chat->conv), skypemessage->from_handle, skypemessage->body);
- serv_got_chat_in(skypemessage->account->gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(chat->conv)), skypemessage->from_handle, PURPLE_MESSAGE_SYSTEM, skype_strdup_withhtml(g_strdup_printf(_("%s has changed the topic to: %s"), skypemessage->from_handle, skypemessage->body)), time(NULL));
- purple_conversation_update(chat->conv, PURPLE_CONV_UPDATE_TOPIC);
- }
- break;
- case SKYPE_MESSAGE_EDITED:
- if (!skypemessage->body || !skypemessage->from_handle || !skypemessage->timestamp)
- return FALSE;
- buddy = purple_find_buddy(skypemessage->account, skypemessage->from_handle);
- body_html = g_strdup_printf("%s edited message '%s'", (buddy&&buddy->alias?buddy->alias:skypemessage->from_handle), skypemessage->body);
- g_free(skypemessage->body);
- skypemessage->body = body_html;
- body_html = skype_strdup_withhtml(skypemessage->body);
- if (chat->type == PURPLE_CONV_TYPE_CHAT)
- {
- if (chat->prpl_chat_id)
- i = chat->prpl_chat_id;
- else
- i = g_str_hash(chat->name);
- serv_got_chat_in(skypemessage->account->gc, i, skypemessage->from_handle, skypemessage->flags, body_html, skypemessage->timestamp);
- } else if (chat->type == PURPLE_CONV_TYPE_IM)
- {
- if (!g_str_equal(skypemessage->from_handle, skype_get_account_username(skypemessage->account)))
- {
- serv_got_im(skypemessage->account->gc, skypemessage->from_handle, body_html, skypemessage->flags, skypemessage->timestamp);
- } else if (chat->partner_handle)
- {
- //if we're here, then we're receiving a message that we sent from a different computer
- serv_got_im(skypemessage->account->gc, chat->partner_handle, body_html, skypemessage->flags, skypemessage->timestamp);
- }
- }
- }
-
- if (skypemessage->flags == PURPLE_MESSAGE_RECV)
- skype_send_message_nowait("SET CHATMESSAGE %d SEEN", messagenumber);
- if (g_hash_table_remove(messages_table, GINT_TO_POINTER(messagenumber)))
- {
- //free the message here
- skypemessage->type = 0;
- skypemessage->timestamp = 0;
- g_free(skypemessage->chatname);
- g_free(skypemessage->body);
- g_free(skypemessage->from_handle);
- g_strfreev(skypemessage->users);
- g_free(skypemessage->leavereason);
-
- g_free(skypemessage);
- }
-
- //can be used in eventloop
- return FALSE;
-}
-
diff --git a/skype_messaging.c b/skype_messaging.c
deleted file mode 100644
index eeda3ed..0000000
--- a/skype_messaging.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <glib.h>
-
-#include "skype_events.c"
-
-static gboolean skype_handle_received_message(char *message);
-
-static void skype_message_received(char *message);
-static gboolean skype_connect();
-static void skype_disconnect();
-static void send_message(const char* message);
-static void hide_skype();
-static gboolean exec_skype();
-
-gpointer send_messages_thread_func(gpointer data);
-void skype_send_message_nowait(char *message, ...);
-char *skype_send_message(char *message, ...);
-
-// Sort through the mess of different OS's to get the right proto
-
-#ifndef SKYPENET
-# ifdef _WIN32
-# include "skype_messaging_win32.c"
-# else /*if !win32 */
-# ifdef __APPLE__
-# include "skype_messaging_carbon.c"
-# else /*if !apple */
-# ifndef SKYPE_DBUS
-# include "skype_messaging_x11.c"
-# else
-# include "skype_messaging_dbus.c"
-# endif /* !x11 */
-# endif /* !apple */
-# endif /* win32 */
-#else /* skypenet */
-# include "skype_messaging_network.c"
-#endif
-
-
-/*typedef struct {
- gpointer sender;
- gpointer body;
- int time;
- gpointer chatname;
-} SkypeMessage;*/
-
-static GHashTable *message_queue = NULL;
-static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
-static GCond *condition = NULL;
-
-#ifdef _WIN32
-//these two #defines override g_static_mutex_lock and
-// g_static_mutex_unlock so as to remove "strict-aliasing"
-// compiler warnings
-#define g_static_mutex_get_mutex2(mutex) \
- g_static_mutex_get_mutex ((GMutex **)(void*)mutex)
-#define g_static_mutex_lock2(mutex) \
- g_mutex_lock (g_static_mutex_get_mutex2 (mutex))
-#define g_static_mutex_unlock2(mutex) \
- g_mutex_unlock (g_static_mutex_get_mutex2 (mutex))
-#else
-#define g_static_mutex_get_mutex2 g_static_mutex_get_mutex
-#define g_static_mutex_lock2 g_static_mutex_lock
-#define g_static_mutex_unlock2 g_static_mutex_unlock
-#endif
-
-static void
-skype_message_received(char *orig_message)
-{
- guint request_number;
- guint *key;
- int string_pos;
- char *message;
-
- if (orig_message == NULL || strlen(orig_message) == 0)
- return;
-
- message = g_strdup(orig_message);
- g_free(orig_message);
-
- skype_debug_info("skype", "Received: %s\n", message);
-
- if(message[0] == '#')
- {
- //It's a reply from a call we've made - update the hash table
- sscanf(message, "#%u %n", &request_number, &string_pos);
- key = g_new(guint, 1);
- *key = request_number;
-
- g_static_mutex_lock2(&mutex);
- g_hash_table_insert(message_queue, key, g_strdup(&message[string_pos]));
- g_cond_broadcast(condition);
- g_static_mutex_unlock2(&mutex);
-
- g_free(message);
- } else {
- purple_timeout_add(1, (GSourceFunc)skype_handle_received_message, (gpointer)message);
- }
-}
-
-static GThread *send_messages_thread = NULL;
-static gboolean send_thread_state = FALSE;
-static GAsyncQueue *send_messages_queue = NULL;
-
-gpointer
-send_messages_thread_func(gpointer data)
-{
- gchar *message;
-
- send_thread_state = TRUE;
- while (send_thread_state)
- {
- //read from async queue
- message = g_async_queue_pop(send_messages_queue);
- //send the message
- send_message(message);
- g_free(message);
- }
- g_async_queue_unref(send_messages_queue);
-
- return NULL;
-}
-
-void
-skype_send_message_nowait(char *message_format, ...)
-{
- va_list args;
- char* message;
-
- va_start(args, message_format);
- message = g_strdup_vprintf(message_format, args);
- va_end(args);
-
- skype_debug_info("skype", "Sending: '%s'\n", message);
-
- if (send_messages_queue == NULL)
- send_messages_queue = g_async_queue_new();
-
- if (send_messages_thread == NULL)
- {
- send_messages_thread = g_thread_create(send_messages_thread_func, NULL, FALSE, NULL);
- }
-
- g_async_queue_push(send_messages_queue, message);
-
-}
-
-char *skype_send_message(char *message_format, ...)
-{
- static guint next_message_num = 0;
- guint cur_message_num;
- char *message;
- char *return_msg;
- va_list args;
-#if __APPLE__ || _WIN32 || __FreeBSD__
- guint timeout = 0;
-#else
- gboolean condition_result;
- GTimeVal endtime = {0,0};
-#endif
-
- va_start(args, message_format);
- message = g_strdup_vprintf(message_format, args);
- va_end(args);
-
- if (!message_queue)
- message_queue = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, NULL);
-
- g_static_mutex_lock2(&mutex);
- if (!condition)
- condition = g_cond_new();
- cur_message_num = next_message_num++;
- if (next_message_num == G_MAXUINT)
- next_message_num = 0;
- g_static_mutex_unlock2(&mutex);
-
- //Send message asynchronously
- skype_send_message_nowait("#%u %s", cur_message_num, message);
- g_free(message);
-
- g_static_mutex_lock2(&mutex);
- //Wait for a response
- while(g_hash_table_lookup(message_queue, &cur_message_num) == NULL)
- {
- g_static_mutex_unlock2(&mutex);
- g_thread_yield();
-
-#ifdef __APPLE__
- RunCurrentEventLoop(kEventDurationMillisecond);
- g_static_mutex_lock2(&mutex);
-
- if (timeout++ == 10000)
-#else
-#ifdef _WIN32
- Sleep(1);
- g_static_mutex_lock2(&mutex);
-
- if (timeout++ == 10000)
-#else
-#ifdef __FreeBSD__
- usleep(1000);
- g_static_mutex_lock2(&mutex);
-
- if (timeout++ == 10000)
-#else
-
- //wait for message for a maximum of 10 seconds
- g_get_current_time(&endtime);
- g_time_val_add(&endtime, 10 * G_USEC_PER_SEC);
- g_static_mutex_lock2(&mutex);
- condition_result = g_cond_timed_wait(condition, g_static_mutex_get_mutex2(&mutex), &endtime);
-
- if(!condition_result)
-#endif
-#endif
-#endif
- {
- //we timed out while waiting
- g_hash_table_remove(message_queue, &cur_message_num);
- g_static_mutex_unlock2(&mutex);
- return g_strdup("");
- }
- }
- return_msg = (char *)g_hash_table_lookup(message_queue, &cur_message_num);
- g_hash_table_remove(message_queue, &cur_message_num);
- g_static_mutex_unlock2(&mutex);
-
- if (strncmp(return_msg, "ERROR", 5) == 0)
- {
- g_free(return_msg);
- return g_strdup("");
- }
- return return_msg;
-}
diff --git a/skype_messaging_carbon.c b/skype_messaging_carbon.c
deleted file mode 100644
index a2d2549..0000000
--- a/skype_messaging_carbon.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <Carbon/Carbon.h>
-//#include <Skype/Skype.h>
-#include <glib.h>
-#include <CoreFoundation/CoreFoundation.h>
-
-//change this to 0 if using an old version of the Skype.framework
-#define SENDSKYPERETURNS 0
-
-#include "skype_messaging_carbon2.c"
-
-static gboolean connected_to_skype = FALSE;
-
-
-static void allow_app_in_skype_api(void);
-
-void
-SkypeNotificationReceived(CFStringRef input)
-{
- char *output = NULL;
- GError *error = NULL;
- int strlen = CFStringGetMaximumSizeForEncoding(CFStringGetLength(input), kCFStringEncodingUTF8);
-
- output = (char *)CFStringGetCStringPtr(input, kCFStringEncodingUTF8);
- if (!output)
- {
- output = NewPtr(strlen+1);
- CFStringGetCString(input, output, strlen+1, kCFStringEncodingUTF8);
- }
- //printf("Message received %s\n", output);
- skype_message_received(output);
- if (error)
- {
- skype_debug_error("skype_osx", "Could not create new thread!!! %s\n", error->message);
- g_error_free(error);
- }
-}
-
-void
-SkypeAttachResponse(unsigned int aAttachResponseCode)
-{
- if (aAttachResponseCode)
- {
- skype_debug_info("skype_osx", "Skype attached successfully :)\n");
- connected_to_skype = TRUE;
- }
- else
- {
- skype_debug_info("skype_osx", "Skype couldn't connect :(\n");
- connected_to_skype = FALSE;
- }
-}
-
-void
-SkypeBecameAvailable(CFPropertyListRef aNotification)
-{
- skype_debug_info("skype_osx", "Skype became available\n");
- //connected_to_skype = TRUE;
- allow_app_in_skype_api();
-}
-
-void
-SkypeBecameUnavailable(CFPropertyListRef aNotification)
-{
- skype_debug_info("skype_osx", "Skype became unavailable\n");
- connected_to_skype = FALSE;
- g_thread_create((GThreadFunc)skype_message_received, g_strdup("CONNSTATUS LOGGEDOUT"), FALSE, NULL);
-}
-
-static struct SkypeDelegate skypeDelegate = {
- CFSTR("Adium"), /* clientAppName */
- SkypeNotificationReceived,
- SkypeAttachResponse,
- SkypeBecameAvailable,
- SkypeBecameUnavailable
-};
-
-static gboolean
-skype_connect()
-{
- gboolean is_skype_running = FALSE;
- int timeout_count = 0;
-
- is_skype_running = IsSkypeRunning();
-
- skype_debug_info("skype_osx", "Is Skype running? '%s'\n", (is_skype_running?"Yes":"No"));
- if (!is_skype_running)
- return FALSE;
-
- if (connected_to_skype)
- skype_disconnect();
-
- SetSkypeDelegate(&skypeDelegate);
- RunCurrentEventLoop(1);
- ConnectToSkype();
-
- while(connected_to_skype == FALSE)
- {
- RunCurrentEventLoop(1);
- allow_app_in_skype_api();
- if (timeout_count++ == 8)
- return FALSE;
- }
- skype_debug_info("skype_osx", "Connected to skype\n");
- return TRUE;
-}
-
-static void
-skype_disconnect()
-{
- connected_to_skype = FALSE;
- DisconnectFromSkype();
- RemoveSkypeDelegate();
- RunCurrentEventLoop(1);
-}
-
-static void
-send_message(const char* message)
-{
- if (!connected_to_skype)
- {
- if (message[0] == '#')
- {
- int message_num;
- //And we're expecting a response
- sscanf(message, "#%d ", &message_num);
- char *error_return = g_strdup_printf("#%d ERROR Carbon", message_num);
- g_thread_create((GThreadFunc)skype_message_received, (void *)error_return, FALSE, NULL);
- }
- return;
- }
-
- CFStringRef messageString = CFStringCreateWithCString(NULL, message, kCFStringEncodingUTF8);
-#if SENDSKYPERETURNS
- CFStringRef returnString = NULL;
- returnString = SendSkypeCommand(messageString);
- if (returnString)
- SkypeNotificationReceived(returnString);
-#else
- SendSkypeCommand(messageString);
-#endif
- //printf("Skype send message %s\n", message);
- CFRelease(messageString);
-}
-
-static void
-hide_skype()
-{
- OSStatus status = noErr;
- ProcessSerialNumber psn = {kNoProcess, kNoProcess};
- unsigned int procNameLength = 32;
- unsigned char procName[procNameLength];
- unsigned int i = 0;
- ProcessInfoRec info;
- info.processInfoLength = sizeof(ProcessInfoRec);
- info.processName = procName;
-#if __LP64__
- info.processAppRef = NULL;
-#else
- info.processAppSpec = NULL;
-#endif
-
- while(status == noErr)
- {
- for(i = 0; i < procNameLength; i++)
- procName[i] = '\0';
-
- status = GetNextProcess(&psn);
- if (status == noErr)
- if (GetProcessInformation(&psn, &info) == noErr)
- //for some reason first character is poisioned
- if (g_str_equal((char *)&procName[1], "Skype"))
- {
- ShowHideProcess(&psn, FALSE);
- return;
- }
- }
-}
-
-static gboolean
-exec_skype()
-{
- gboolean success = FALSE;
-#ifndef INSTANTBIRD
- success = g_spawn_command_line_async("/Applications/Skype.app/Contents/MacOS/Skype", NULL);
-#endif
- return success;
-}
-
-static gboolean
-is_skype_running()
-{
- return IsSkypeRunning();
-}
-
-static void
-allow_app_in_skype_api()
-{
- static const char *script_string = "tell application \"System Events\" to tell process \"Skype\"\n"
- "set numWindows to count of windows\n"
- "repeat with w from 1 to numWindows\n"
- "if (name of window w contains \"Skype\" and name of window w contains \"API\")\n"
- "tell window w\n"
- "click radio button 1 of radio group 1\n"
- "delay 0.1\n"
- "click button 4\n"
- "end tell\n"
- "exit repeat\n"
- "end if\n"
- "end repeat\n"
- "end tell";
- AEDesc script_data;
- OSAID script_id = kOSANullScript;
- OSAError err;
- FILE *access_file = NULL;
-
- skype_debug_info("skype_osx", "Enabling universal access\n");
- access_file = fopen("/private/var/db/.AccessibilityAPIEnabled", "w");
- if (access_file != NULL)
- {
- fwrite("a\n", 1, 2, access_file);
- fclose(access_file);
- }
-
- ComponentInstance script = OpenDefaultComponent(kOSAComponentType, typeAppleScript);
- AECreateDesc(typeChar, script_string, strlen(script_string), &script_data);
- OSACompile(script, &script_data, kOSAModeNull, &script_id);
- skype_debug_info("skype_osx", "Trying to run AppleScript code\n");
- err = OSAExecute(script, script_id, kOSANullScript, kOSAModeNull, &script_id);
- if (err == -1753)
- {
- skype_debug_error("skype_osx", "Error: 'Access assistive devices' isn't enabled\n"
- "see http://images.apple.com/applescript/uiscripting/gfx/gui.03.jpg for details.\n");
- } else {
- skype_debug_info("skype_osx", "Error number %d\n", err);
- }
-}
-
diff --git a/skype_messaging_carbon2.c b/skype_messaging_carbon2.c
deleted file mode 100755
index 204d6ef..0000000
--- a/skype_messaging_carbon2.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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 <Carbon/Carbon.h>
-#include <CoreFoundation/CoreFoundation.h>
-
-
-typedef struct SkypeDelegate
-{
- // Required member
- CFStringRef clientApplicationName;
-
- // Optional members, can be NULL
- void (*SkypeNotificationReceived)(CFStringRef aNotificationString);
- void (*SkypeAttachResponse)(unsigned int aAttachResponseCode); // 0 - failed, 1 - success
- void (*SkypeBecameAvailable)(CFPropertyListRef aNotification);
- void (*SkypeBecameUnavailable)(CFPropertyListRef aNotification);
-} SkypeDelegate;
-
-static SkypeDelegate *delegate = NULL;
-static int isavailable = 0;
-static int client_id = 0;
-
-char *
-CFStringToCString(CFStringRef input)
-{
- if (input == NULL)
- return NULL;
- int strlen = CFStringGetMaximumSizeForEncoding(CFStringGetLength(input), kCFStringEncodingUTF8);
- char *output = NewPtr(strlen+1);
- CFStringGetCString(input, output, strlen+1, kCFStringEncodingUTF8);
- return output;
-}
-
-int
-CFNumberToCInt(CFNumberRef input)
-{
- if (input == NULL)
- return 0;
- int output;
- CFNumberGetValue(input, kCFNumberIntType, &output);
- return output;
-}
-
-void
-availabilityUpdateCallback(
- CFNotificationCenterRef center,
- void *observer,
- CFStringRef name,
- const void *object,
- CFDictionaryRef userInfo)
-{
- CFNumberRef number = (CFNumberRef)CFDictionaryGetValue(userInfo, CFSTR("SKYPE_API_AVAILABILITY"));
- isavailable = CFNumberToCInt(number);
-}
-
-void
-debugCallback(
- CFNotificationCenterRef center,
- void *observer,
- CFStringRef name,
- const void *object,
- CFDictionaryRef userInfo)
-{
- int i = 0;
-
- printf("Debug callback: %s\n", CFStringToCString(name));
- if (!userInfo)
- return;
-
- CFIndex count = CFDictionaryGetCount(userInfo);
- const void *keys[count];
- const void *values[count];
- CFDictionaryGetKeysAndValues(userInfo, keys, values);
- for(i = 0; i < count; i++)
- {
- printf("For i=%d, key: %s\n", i,
- CFStringToCString((CFStringRef)keys[i]));
- }
-}
-
-
-void
-apiNotificationCallback(
- CFNotificationCenterRef center,
- void *observer,
- CFStringRef name,
- const void *object,
- CFDictionaryRef userInfo)
-{
- CFNumberRef number = (CFNumberRef) CFDictionaryGetValue(userInfo, CFSTR("SKYPE_API_CLIENT_ID"));
- int client_number = CFNumberToCInt(number);
- if (client_number != 999 && (!client_id || client_id != client_number))
- {
- return;
- }
- CFStringRef string = (CFStringRef) CFDictionaryGetValue(userInfo, CFSTR("SKYPE_API_NOTIFICATION_STRING"));
- if (string && delegate && delegate->SkypeNotificationReceived)
- {
- delegate->SkypeNotificationReceived(string);
- }
-}
-
-
-void
-attachResponseCallback(
- CFNotificationCenterRef center,
- void *observer,
- CFStringRef name,
- const void *object,
- CFDictionaryRef userInfo)
-{
- CFNumberRef responseNumber = (CFNumberRef)CFDictionaryGetValue(userInfo, CFSTR("SKYPE_API_ATTACH_RESPONSE"));
- int response = CFNumberToCInt(responseNumber);
- client_id = response;
- if (delegate && delegate->SkypeAttachResponse)
- {
- delegate->SkypeAttachResponse(response?1:0);
- }
-}
-
-
-void
-skypeQuitCallback(
- CFNotificationCenterRef center,
- void *observer,
- CFStringRef name,
- const void *object,
- CFDictionaryRef userInfo)
-{
- if (delegate && delegate->SkypeBecameAvailable)
- delegate->SkypeBecameUnavailable(NULL);
-}
-
-
-void
-skypeAvailableCallback(
- CFNotificationCenterRef center,
- void *observer,
- CFStringRef name,
- const void *object,
- CFDictionaryRef userInfo)
-{
- if (delegate && delegate->SkypeBecameAvailable)
- delegate->SkypeBecameAvailable(NULL);
-}
-
-
-// STANDARD SKYPE.H BITS:
-void RemoveSkypeDelegate(void);
-
-void
-SetSkypeDelegate(SkypeDelegate *aDelegate)
-{
- if (!aDelegate->clientApplicationName)
- {
- printf("Deletegate requires application name\n");
- delegate = NULL;
- return;
- }
-
- if (delegate)
- {
- RemoveSkypeDelegate();
- }
-
- delegate = aDelegate;
-
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-
- CFNotificationCenterAddObserver(
- center,
- delegate->clientApplicationName,
- apiNotificationCallback,
- CFSTR("SKSkypeAPINotification"),
- NULL,
- CFNotificationSuspensionBehaviorDeliverImmediately);
-
- CFNotificationCenterAddObserver(
- center,
- delegate->clientApplicationName,
- skypeQuitCallback,
- CFSTR("SKSkypeWillQuit"),
- NULL,
- CFNotificationSuspensionBehaviorDeliverImmediately);
-
- CFNotificationCenterAddObserver(
- center,
- delegate->clientApplicationName,
- skypeAvailableCallback,
- CFSTR("SKSkypeBecameAvailable"),
- NULL,
- CFNotificationSuspensionBehaviorDeliverImmediately);
-
- CFNotificationCenterAddObserver(
- center,
- delegate->clientApplicationName,
- availabilityUpdateCallback,
- CFSTR("SKAvailabilityUpdate"),
- NULL,
- CFNotificationSuspensionBehaviorDeliverImmediately);
-
- CFNotificationCenterAddObserver(
- center,
- delegate->clientApplicationName,
- attachResponseCallback,
- CFSTR("SKSkypeAttachResponse"),
- NULL,
- CFNotificationSuspensionBehaviorDeliverImmediately);
-}
-
-SkypeDelegate *
-GetSkypeDelegate(void)
-{
- return delegate;
-}
-
-void
-RemoveSkypeDelegate(void)
-{
- if (delegate && delegate->clientApplicationName)
- {
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-
- CFNotificationCenterRemoveObserver(
- center,
- delegate->clientApplicationName,
- CFSTR("SKSkypeAPINotification"),
- NULL);
-
- CFNotificationCenterRemoveObserver(
- center,
- delegate->clientApplicationName,
- CFSTR("SKSkypeWillQuit"),
- NULL);
-
- CFNotificationCenterRemoveObserver(
- center,
- delegate->clientApplicationName,
- CFSTR("SKSkypeBecameAvailable"),
- NULL);
-
- CFNotificationCenterRemoveObserver(
- center,
- delegate->clientApplicationName,
- CFSTR("SKAvailabilityUpdate"),
- NULL);
-
- CFNotificationCenterRemoveObserver(
- center,
- delegate->clientApplicationName,
- CFSTR("SKSkypeAttachResponse"),
- NULL);
- }
- delegate = NULL;
-}
-
-int
-IsSkypeAvailable(void)
-{
- //is skype available?
- isavailable = 0;
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-
- CFNotificationCenterPostNotification(
- center,
- CFSTR("SKSkypeAPIAvailabilityRequest"),
- NULL,
- NULL,
- TRUE);
-
- //Should only take 1 second or less to reply
- RunCurrentEventLoop(1);
- int avail = isavailable;
- isavailable = 0;
- return avail;
-}
-
-int
-IsSkypeRunning(void)
-{
- OSStatus status = noErr;
- ProcessSerialNumber psn = {kNoProcess, kNoProcess};
- unsigned int procNameLength = 32;
- unsigned char procName[procNameLength];
- unsigned int i = 0;
- ProcessInfoRec info;
- info.processInfoLength = sizeof(ProcessInfoRec);
- info.processName = procName;
-#if __LP64__
- info.processAppRef = NULL;
-#else
- info.processAppSpec = NULL;
-#endif
- pid_t pid = 0;
-
- while(status == noErr)
- {
- for(i = 0; i < procNameLength; i++)
- procName[i] = '\0';
-
- status = GetNextProcess(&psn);
- if (status == noErr)
- {
- if (GetProcessInformation(&psn, &info) == noErr)
- {
- //for some reason first character is poisioned
- if (g_str_equal((char *)&procName[1], "Skype"))
- {
- if (GetProcessPID(&psn, &pid) == noErr)
- {
- return (int)pid;
- }
- }
- }
- }
- }
- return 0;
-}
-
-void
-ConnectToSkype(void)
-{
- if (!delegate || !delegate->clientApplicationName)
- {
- printf("Error: Delegate not set\n");
- return;
- }
-
- if (!IsSkypeAvailable())
- {
- printf("Error: Skype not available\n");
- }
-
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-
- //do the connect
- CFNotificationCenterPostNotification(
- center,
- CFSTR("SKSkypeAPIAttachRequest"),
- delegate->clientApplicationName,
- NULL,
- TRUE);
-}
-
-void SendSkypeCommand(CFStringRef command)
-{
- if (delegate == NULL)
- {
- printf("Can't send message, no delegate set\n");
- return;
- }
- if (command == NULL)
- return;
- if (!client_id)
- {
- printf("Can't send message, not connected\n");
- return;
- }
-
- CFRetain(command);
-
- CFNumberRef id_number = CFNumberCreate(NULL, kCFNumberIntType, &client_id);
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
- const void *keys[] = {(void *)CFSTR("SKYPE_API_COMMAND"), (void *)CFSTR("SKYPE_API_CLIENT_ID")};
- const void *values[] = {command, id_number};
- CFDictionaryRef userInfo = CFDictionaryCreate(NULL, keys, values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-
- //send message
- CFNotificationCenterPostNotification(
- center,
- CFSTR("SKSkypeAPICommand"),
- NULL,
- userInfo,
- TRUE);
-
- CFRelease(command);
- CFRelease(id_number);
- CFRelease(userInfo);
-}
-
-void DisconnectFromSkype(void)
-{
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
-
- if (client_id)
- {
- CFNumberRef id_number = CFNumberCreate(NULL, kCFNumberIntType, &client_id);
- const void *keys[] = {(void *)CFSTR("SKYPE_API_CLIENT_ID")};
- const void *values[] = {id_number};
- CFDictionaryRef userInfo = CFDictionaryCreate(NULL, keys, values, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-
- //disconnect
- CFNotificationCenterPostNotification(
- center,
- CFSTR("SKSkypeAPIDetachRequest"),
- NULL,
- userInfo,
- TRUE);
-
- client_id = 0;
- }
-}
diff --git a/skype_messaging_dbus.c b/skype_messaging_dbus.c
deleted file mode 100644
index d81dbba..0000000
--- a/skype_messaging_dbus.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus-glib-lowlevel.h>
-
-#define SKYPE_DBUS_BUS DBUS_BUS_SESSION
-
-static DBusGConnection *connection = NULL;
-static DBusGProxy *proxy = NULL;
-
-static DBusHandlerResult
-skype_notify_handler(DBusConnection *connection, DBusMessage *message, gpointer user_data)
-{
- DBusMessageIter iterator;
- gchar *message_temp;
- DBusMessage *temp_message;
-
- temp_message = dbus_message_ref(message);
- dbus_message_iter_init(temp_message, &iterator);
- if (dbus_message_iter_get_arg_type(&iterator) != DBUS_TYPE_STRING)
- {
- dbus_message_unref(message);
- return FALSE;
- }
-
- do
- {
- dbus_message_iter_get_basic(&iterator, &message_temp);
- skype_message_received(g_strdup(message_temp));
- } while(dbus_message_iter_has_next(&iterator) && dbus_message_iter_next(&iterator));
-
- dbus_message_unref(message);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static void
-skype_destroy_handler(GObject *sender, gpointer data)
-{
- proxy = NULL;
- skype_message_received(g_strdup("CONNSTATUS LOGGEDOUT"));
-}
-
-static gboolean
-skype_connect()
-{
- GError *error = NULL;
- DBusObjectPathVTable vtable;
-
- //Initialise threading
- dbus_threads_init_default();
-
- if (connection == NULL)
- {
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (connection == NULL && error != NULL)
- {
- skype_debug_info("skype_dbus", "Error: %s\n", error->message);
- g_error_free(error);
- return FALSE;
- }
- }
-
- if (proxy == NULL)
- {
- proxy = dbus_g_proxy_new_for_name_owner (connection,
- "com.Skype.API",
- "/com/Skype",
- "com.Skype.API",
- &error);
- if (proxy == NULL && error != NULL)
- {
- skype_debug_warning("skype_dbus", "%s\n", error->message);
- g_error_free(error);
- return FALSE;
- }
-
- g_signal_connect(G_OBJECT(proxy), "destroy", G_CALLBACK(skype_destroy_handler), NULL);
-#ifdef DBUS_MAJOR_VERSION
- dbus_g_proxy_set_default_timeout(proxy, 3000);
-#endif
- vtable.message_function = &skype_notify_handler;
- dbus_connection_register_object_path(dbus_g_connection_get_connection(connection), "/com/Skype/Client", &vtable, NULL);
- }
-
- return TRUE;
-}
-
-static void
-skype_disconnect()
-{
- /*if (connection != NULL)
- g_free(connection);
- if (proxy != NULL)
- g_free(proxy);
- if (proxy_receive != NULL)
- g_free(proxy_receive);*/
-}
-
-static void
-send_message(const char* message)
-{
- GError *error = NULL;
- gchar *str = NULL;
- int message_num;
- gchar error_return[30];
-
- if (!dbus_g_proxy_call (proxy, "Invoke", &error, G_TYPE_STRING, message, G_TYPE_INVALID,
- G_TYPE_STRING, &str, G_TYPE_INVALID))
- {
- if (error && error->message)
- {
- skype_debug_info("skype_dbus", "Error sending message: %s\n", error->message);
- if (message[0] == '#')
- {
- //We're expecting a response
- sscanf(message, "#%d ", &message_num);
- sprintf(error_return, "#%d ERROR", message_num);
- skype_message_received(g_strdup(error_return));
- }
- } else {
- skype_debug_info("skype_dbus", "no response\n");
- }
- }
- if (str != NULL)
- {
- skype_message_received(str);
- }
-
-}
-
-static gboolean
-is_skype_running()
-{
- const gchar *temp;
- int pid;
- gchar* stat_path;
- FILE *fh;
- gchar exec_name[16];
- struct stat *statobj = g_new(struct stat, 1);
- //open /proc
- GDir *procdir = g_dir_open("/proc", 0, NULL);
- //go through directories that are numbers
- while((temp = g_dir_read_name(procdir)))
- {
- pid = atoi(temp);
- if (!pid)
- continue;
- // /proc/{pid}/stat contains lots of juicy info
- stat_path = g_strdup_printf("/proc/%d/stat", pid);
- fh = fopen(stat_path, "r");
- if (!fh)
- {
- g_free(stat_path);
- continue;
- }
- pid = fscanf(fh, "%*d (%15[^)]", exec_name);
- fclose(fh);
- if (!g_str_equal(exec_name, "skype"))
- {
- g_free(stat_path);
- continue;
- }
- //get uid/owner of stat file by using fstat()
- g_stat(stat_path, statobj);
- g_free(stat_path);
- //compare uid/owner of stat file (in g_stat->st_uid) to getuid();
- if (statobj->st_uid == getuid())
- {
- //this copy of skype was started by us
- g_dir_close(procdir);
- g_free(statobj);
- return TRUE;
- }
- }
- g_dir_close(procdir);
- g_free(statobj);
- return FALSE;
-}
-
-static void
-hide_skype()
-{
-
-}
-
-static gboolean
-exec_skype()
-{
-#ifdef INSTANTBIRD
- return FALSE;
-#else
- GError *error;
- if (g_spawn_command_line_async("skype --enable-dbus --use-session-dbus --disable-cleanlooks", &error))
- {
- return TRUE;
- } else {
- skype_debug_error("skype", "Could not start skype: %s\n", error->message);
- return FALSE;
- }
-#endif
-}
-
diff --git a/skype_messaging_network.c b/skype_messaging_network.c
deleted file mode 100644
index a2365fb..0000000
--- a/skype_messaging_network.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <glib.h>
-#include <errno.h>
-#include <string.h>
-//#include <sys/ioctl.h>
-
-#ifdef _WIN32
-#define fsync(fd) _commit(fd)
-#endif
-
-static guint input_timeout;
-static gint source_sock = -1;
-static gboolean connected = FALSE;
-static gboolean in_progress = FALSE;
-static gchar etb_string[2] = {23, 0};
-
-
-void
-read_function_cb(gpointer data, gint source, PurpleInputCondition cond)
-{
- int len;
- gchar response[3096];
- static GString *response_string = NULL;
- gchar *reply;
- gchar **reply_pieces;
- int i;
-
- len = read(source, response, sizeof(response)-1);
- if (len < 0)
- {
- if (errno != EAGAIN && errno != EWOULDBLOCK)
- {
- skype_disconnect();
- }
- return;
- }
-
- if (len == sizeof(response)-1)
- {
- if (response_string == NULL)
- response_string = g_string_new_len(response, len);
- else
- response_string = g_string_append_len(response_string, response, len);
- }
- else
- {
- if (response_string)
- {
- if (len > 0)
- response_string = g_string_append_len(response_string, response, len);
- reply = g_string_free(response_string, FALSE);
- response_string = NULL;
- }
- else if (len)
- reply = g_strndup(response, len);
- else
- return;
- reply = g_strstrip(reply);
- reply_pieces = g_strsplit(reply, etb_string, -1);
- g_free(reply);
- for (i=0; reply_pieces[i+1]; i++)
- {
- reply = reply_pieces[i];
- if (g_str_equal(reply, "LOGIN"))
- {
- connected = TRUE;
- in_progress = FALSE;
- skype_debug_info("skype", "Received: LOGIN\n");
- } else {
- g_thread_create((GThreadFunc)skype_message_received, g_strdup(reply), FALSE, NULL);
- }
- }
- //check that we received part of a message
- if (strlen(reply_pieces[i]))
- {
- skype_debug_info("skype", "Last piece: '%s'\n", reply_pieces[i]);
- response_string = g_string_new(reply_pieces[i]);
- }
- g_strfreev(reply_pieces);
- }
-}
-
-gpointer
-skype_read_thread(gpointer data)
-{
- while(connected || in_progress)
- {
- read_function_cb(data, source_sock, PURPLE_INPUT_READ);
- g_thread_yield();
- sleep(1);
- }
- return data;
-}
-
-void
-connect_function(gpointer data, gint source, const gchar *error_message)
-{
- gchar *loginmsg;
- PurpleAccount *acct = skype_get_account(NULL);
-
- if (error_message)
- {
- in_progress = FALSE;
- g_thread_create((GThreadFunc)skype_message_received, g_strdup("CONNSTATUS LOGGEDOUT"), FALSE, NULL);
- return;
- }
- source_sock = source;
-
- loginmsg = g_strdup_printf("LOGIN %s %s", acct->username, acct->password);
- send_message(loginmsg);
- skype_debug_info("skype", "Sending: 'LOGIN {username} {password}'\n");
- g_free(loginmsg);
-
- g_thread_create((GThreadFunc)skype_read_thread, NULL, FALSE, NULL);
-}
-
-static gboolean
-skype_connect()
-{
- return connected;
-}
-
-static void
-skype_disconnect()
-{
- if (!connected)
- return;
-
- send_message("QUIT");
-
- connected = FALSE;
- close(source_sock);
- source_sock = -1;
- purple_input_remove(input_timeout);
- in_progress = FALSE;
-}
-
-static void
-send_message(const char* message)
-{
- int message_num;
- char *error_return;
- char *temp;
- int msglen = -1;
- int len = 0;
-
- if (message)
- {
- msglen = strlen(message) + 1;
- temp = g_strdup_printf("%s%c", message, 23);
- len = write(source_sock, temp, msglen);
- fsync(source_sock);
- g_free(temp);
- }
-
- if (len != msglen)
- {
- //There was an error
- if (message[0] == '#')
- {
- //And we're expecting a response
- sscanf(message, "#%d ", &message_num);
- error_return = g_strdup_printf("#%d ERROR NETWORK", message_num);
- g_thread_create((GThreadFunc)skype_message_received, (void *)error_return, FALSE, NULL);
- }
- }
-}
-
-static void
-hide_skype()
-{
- //don't need to since SILENT_MODE ON works
- return;
-}
-
-gboolean
-connection_timeout(gpointer data)
-{
- in_progress = FALSE;
- return FALSE;
-}
-
-static gboolean
-exec_skype()
-{
- if (!connected && !in_progress)
- {
- in_progress = TRUE;
- PurpleAccount *acct = skype_get_account(NULL);
- purple_proxy_connect(acct->gc, acct, purple_account_get_string(acct, "host", "skype.robbmob.com"), purple_account_get_int(acct, "port", 5000), connect_function, acct);
- g_thread_create((GThreadFunc)skype_read_thread, acct, FALSE, NULL);
- purple_timeout_add_seconds(10, connection_timeout, acct);
- }
- return TRUE;
-}
-
-static gboolean
-is_skype_running()
-{
- return connected || in_progress;
-}
diff --git a/skype_messaging_win32.c b/skype_messaging_win32.c
deleted file mode 100644
index 9772047..0000000
--- a/skype_messaging_win32.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <windows.h>
-#include <tlhelp32.h>
-#include <glib.h>
-
-#define SKYPE_WIN32_CLASS_NAME "Skype-libpurple-Joiner"
-
-static LRESULT APIENTRY Skype_WindowProc(HWND hWindow, UINT uiMessage,
- WPARAM uiParam, LPARAM ulParam);
-static void win32_message_loop(void);
-
-HINSTANCE hInit_ProcessHandle = NULL;
-static UINT uiGlobal_MsgID_SkypeControlAPIAttach = 0;
-static UINT uiGlobal_MsgID_SkypeControlAPIDiscover = 0;
-static HWND hInit_MainWindowHandle = NULL;
-static HWND hGlobal_SkypeAPIWindowHandle = NULL;
-HANDLE hEvent = NULL;
-
-static gboolean
-skype_connect()
-{
- int i = 0;
- PDWORD_PTR sendMessageResult = NULL;
-
- if (!uiGlobal_MsgID_SkypeControlAPIAttach)
- uiGlobal_MsgID_SkypeControlAPIAttach = RegisterWindowMessage("SkypeControlAPIAttach");
- if (!uiGlobal_MsgID_SkypeControlAPIDiscover)
- uiGlobal_MsgID_SkypeControlAPIDiscover = RegisterWindowMessage("SkypeControlAPIDiscover");
-
- if (!hInit_ProcessHandle)
- hInit_ProcessHandle = (HINSTANCE)OpenProcess( PROCESS_DUP_HANDLE, FALSE, GetCurrentProcessId());
- skype_debug_info("skype_win32", "ProcessId %d\n", GetCurrentProcessId());
- skype_debug_info("skype_win32", "hInit_ProcessHandle %d\n", hInit_ProcessHandle);
-
- g_thread_create((GThreadFunc)win32_message_loop, NULL, FALSE, NULL);
- while(hInit_MainWindowHandle == NULL)
- {
- Sleep(10);
- }
-
- skype_debug_info("skype_win32", "hInit_MainWindowHandle %d\n", hInit_MainWindowHandle);
- skype_debug_info("skype_win32", "Sending broadcast message\n");
- SendMessageTimeout( HWND_BROADCAST, uiGlobal_MsgID_SkypeControlAPIDiscover, (WPARAM)hInit_MainWindowHandle, 0, SMTO_NORMAL, 1000, sendMessageResult);
- skype_debug_info("skype_win32", "Broadcast message sent\n");
-
- while(hGlobal_SkypeAPIWindowHandle == NULL && i < 100)
- {
- i++;
- Sleep(10);
- }
-
- if (hGlobal_SkypeAPIWindowHandle == NULL)
- return FALSE;
-
- return TRUE;
-}
-
-static void
-win32_message_loop(void)
-{
- MSG msg;
- WNDCLASS oWindowClass;
- int classRegistration;
- static gboolean message_loop_started = FALSE;
-
- if (message_loop_started)
- return;
- message_loop_started = TRUE;
-
- oWindowClass.style = CS_HREDRAW|CS_VREDRAW;
- oWindowClass.lpfnWndProc = (WNDPROC)&Skype_WindowProc;
- oWindowClass.cbClsExtra = 0;
- oWindowClass.cbWndExtra = 0;
- oWindowClass.hInstance = hInit_ProcessHandle;
- oWindowClass.hIcon = NULL;
- oWindowClass.hCursor = NULL;
- oWindowClass.hbrBackground = NULL;
- oWindowClass.lpszMenuName = NULL;
- oWindowClass.lpszClassName = SKYPE_WIN32_CLASS_NAME;
- classRegistration = RegisterClass(&oWindowClass);
- hInit_MainWindowHandle = CreateWindow(SKYPE_WIN32_CLASS_NAME, SKYPE_WIN32_CLASS_NAME,
- WS_OVERLAPPEDWINDOW, 0, 0, 0, 0,
- NULL, NULL, hInit_ProcessHandle, NULL);
-
- ShowWindow(hInit_MainWindowHandle, SW_HIDE);
- UpdateWindow(hInit_MainWindowHandle);
- while (GetMessage(&msg, NULL, 0, 0) != 0)
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- skype_debug_info("skype_win32", "Finished message loop\n");
- DestroyWindow(hInit_MainWindowHandle);
- hInit_MainWindowHandle = NULL;
- message_loop_started = FALSE;
-}
-
-static void
-skype_disconnect()
-{
- UnregisterClass(SKYPE_WIN32_CLASS_NAME, hInit_ProcessHandle);
- CloseHandle(hInit_ProcessHandle);
- hInit_ProcessHandle = NULL;
-
- if (hInit_MainWindowHandle != NULL)
- {
- //tell win32_message_loop() thread to die gracefully
- PostMessage(hInit_MainWindowHandle, WM_QUIT, 0, 0);
- }
-}
-
-static void
-send_message(const char* message)
-{
- int message_num;
- char *error_return;
-
- COPYDATASTRUCT oCopyData;
- oCopyData.dwData = 0;
- oCopyData.lpData = (void *)message;
- oCopyData.cbData = strlen(message) + 1;
-
- if (SendMessage( hGlobal_SkypeAPIWindowHandle, WM_COPYDATA,
- (WPARAM)hInit_MainWindowHandle, (LPARAM)&oCopyData) == FALSE)
- {
- hGlobal_SkypeAPIWindowHandle = NULL;
- //There was an error
- if (message[0] == '#')
- {
- //And we're expecting a response
- sscanf(message, "#%d ", &message_num);
- error_return = g_strdup_printf("#%d ERROR WIN32", message_num);
- g_thread_create((GThreadFunc)skype_message_received, (void *)error_return, FALSE, NULL);
- }
- }
-}
-
-static LRESULT CALLBACK
-Skype_WindowProc(HWND hWindow, UINT uiMessage, WPARAM uiParam, LPARAM ulParam)
-{
-
- if(uiMessage == WM_COPYDATA && hGlobal_SkypeAPIWindowHandle == (HWND)uiParam)
- {
- PCOPYDATASTRUCT poCopyData = (PCOPYDATASTRUCT)ulParam;
- skype_message_received(g_strdup(poCopyData->lpData));
- return 1;
- } else if (uiMessage == uiGlobal_MsgID_SkypeControlAPIAttach) {
- skype_debug_info("skype_win32", "Attached process %d %d\n", uiParam, ulParam);
- if (ulParam == 0)
- {
- skype_debug_info("skype_win32", "Attach success\n");
- hGlobal_SkypeAPIWindowHandle = (HWND)uiParam;
- //TODO send a message asking what the skype username is, to work with multiple skypes
- }
- else if (ulParam == 1)
- skype_debug_info("skype_win32", "Pending auth\n");
- else if (ulParam == 2)
- skype_debug_info("skype_win32", "Refused\n");
- else if (ulParam == 3)
- skype_debug_info("skype_win32", "Not ready\n");
- else if (ulParam == 0x8001)
- skype_debug_info("skype_win32", "Skype became ready\n");
- return 1;
- }
- return DefWindowProc(hWindow, uiMessage, uiParam, ulParam);
-}
-
-static void
-hide_skype()
-{
- //don't need to since SILENT_MODE ON works
- return;
-}
-
-static gboolean
-exec_skype()
-{
-#ifdef INSTANTBIRD
- return FALSE;
-#else
- DWORD size = 0;
- gchar *path, *pathtemp;
- HKEY regkey;
- gboolean success = FALSE;
-
- //HKCU\Software\Skype\Phone\SkypePath or HKLM\Software\Skype\Phone\SkypePath
-
- RegOpenKey(HKEY_CURRENT_USER, "Software\\Skype\\Phone", &regkey);
- RegQueryValueEx(regkey, "SkypePath", NULL, NULL, NULL, &size);
- if (size != 0)
- {
- path = g_new(gchar, size);
- RegQueryValueEx(regkey, "SkypePath", NULL, NULL, (LPBYTE)path, &size);
- } else {
- RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Skype\\Phone", &regkey);
- RegQueryValueEx(regkey, "SkypePath", NULL, NULL, NULL, &size);
- if (size != 0)
- {
- path = g_new(gchar, size);
- RegQueryValueEx(regkey, "Software\\Skype\\Phone\\SkypePath", NULL, NULL, (LPBYTE)path, &size);
- } else if (g_file_test("..\\Skype.Portable\\skype-start.exe", G_FILE_TEST_EXISTS))
- {
- path = g_strdup("..\\Skype.Portable\\skype-start.exe");
- } else {
- path = g_strdup("C:\\Program Files\\Skype\\Phone\\Skype.exe");
- }
- }
-
- pathtemp = g_strconcat("\"", path, "\" /nosplash /minimized", NULL);
- skype_debug_info("skype_win32", "Path to Skype: %s\n", pathtemp);
- g_free(path);
-
- success = g_spawn_command_line_async(pathtemp, NULL);
- g_free(pathtemp);
- return success;
-#endif
-}
-
-static gboolean
-is_skype_running()
-{
-#ifdef _TLHELP32_H
- HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
- HANDLE temp = NULL;
- PROCESSENTRY32 entry;
- entry.dwSize = sizeof(PROCESSENTRY32);
- Process32First(snapshot, &entry);
- do {
- if (g_str_equal("Skype.exe", entry.szExeFile))
- {
- temp = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
- CloseHandle(snapshot);
- return TRUE;
- }
- } while (Process32Next(snapshot, &entry));
- CloseHandle(snapshot);
-#endif
- return FALSE;
-}
diff --git a/skype_messaging_x11.c b/skype_messaging_x11.c
deleted file mode 100644
index 50f79f3..0000000
--- a/skype_messaging_x11.c
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * Skype plugin for libpurple/Pidgin/Adium
- * Written by: Eion Robb <eionrobb@gmail.com>
- *
- * This plugin uses the Skype API to show your contacts in libpurple, and send/receive
- * chat messages.
- * It requires the Skype program to be running.
- *
- * 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 3 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/>.
- */
-
-#ifndef INCLUDED_LIBSKYPE_C
-# error "Don't compile this file directly. Just compile libskype.c instead."
-#endif
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-
-static Display *disp = NULL;
-static Window win = (Window)None;
-Window skype_win = (Window)None;
-static GThread *receiving_thread = NULL;
-Atom message_start, message_continue;
-static gboolean run_loop = FALSE;
-static unsigned char x11_error_code = 0;
-static GStaticMutex x11_mutex = G_STATIC_MUTEX_INIT;
-
-static void receive_message_loop(void);
-int x11_error_handler(Display *disp, XErrorEvent *error);
-
-static gboolean
-skype_connect()
-{
- Window root;
- Atom skype_inst;
- Atom type_ret;
- int format_ret;
- unsigned long nitems_ret;
- unsigned long bytes_after_ret;
- unsigned char *prop;
- int status;
-
- x11_error_code = 0;
- XSetErrorHandler(x11_error_handler);
- skype_debug_info("skype_x11", "Set the XErrorHandler\n");
-#ifdef USE_XVFB_SERVER
- if (!getenv("SKYPEDISPLAY"))
- setenv("SKYPEDISPLAY", ":25", 0);
-#endif
- if (getenv("SKYPEDISPLAY"))
- disp = XOpenDisplay(getenv("SKYPEDISPLAY"));
- else
- disp = XOpenDisplay(getenv("DISPLAY"));
- if (disp == NULL)
- {
- skype_debug_info("skype_x11", "Couldn't open display\n");
- return FALSE;
- }
- skype_debug_info("skype_x11", "Opened display\n");
- message_start = XInternAtom( disp, "SKYPECONTROLAPI_MESSAGE_BEGIN", False );
- message_continue = XInternAtom( disp, "SKYPECONTROLAPI_MESSAGE", False );
- root = DefaultRootWindow( disp );
- win = XCreateSimpleWindow( disp, root, 0, 0, 1, 1,
- 0, BlackPixel( disp, DefaultScreen( disp ) ),
- BlackPixel( disp, DefaultScreen( disp ) ));
- XFlush(disp);
- if (win == None)
- {
- XCloseDisplay(disp);
- disp = NULL;
- skype_debug_info("skype_x11", "Could not create X11 messaging window\n");
- return FALSE;
- }
- skype_debug_info("skype_x11", "Created X11 messaging window\n");
- skype_inst = XInternAtom(disp, "_SKYPE_INSTANCE", True);
- if (skype_inst == None)
- {
- XDestroyWindow(disp, win);
- XCloseDisplay(disp);
- win = (Window)None;
- disp = NULL;
- skype_debug_info("skype_x11", "Could not create skype Atom\n");
- return FALSE;
- }
- skype_debug_info("skype_x11", "Created skype Atom\n");
- status = XGetWindowProperty(disp, root, skype_inst, 0, 1, False, XA_WINDOW, &type_ret, &format_ret, &nitems_ret, &bytes_after_ret, &prop);
- if(status != Success || format_ret != 32 || nitems_ret < 1)
- {
- XDestroyWindow(disp, win);
- XCloseDisplay(disp);
- win = (Window)None;
- XFree(prop);
- disp = NULL;
- skype_debug_info("skype", "Skype instance not found\n");
- return FALSE;
- }
- skype_debug_info("skype_x11", "Skype instance found\n");
- skype_win = * (const unsigned long *) prop & 0xffffffff;
- XFree(prop);
- run_loop = TRUE;
-
- skype_debug_info("skype_x11", "Charging lasers...\n");
- receiving_thread = g_thread_create((GThreadFunc)receive_message_loop, NULL, FALSE, NULL);
-
- return TRUE;
-}
-
-
-static void
-skype_disconnect()
-{
- run_loop = FALSE;
- skype_win = (Window)None;
-
- if (disp != NULL)
- {
- if (win != None)
- {
- //wait here for the event to be handled
- XDestroyWindow(disp, win);
- }
- XCloseDisplay(disp);
- }
-
- win = (Window)None;
- disp = NULL;
-}
-
-int
-x11_error_handler(Display *disp, XErrorEvent *error)
-{
- x11_error_code = error->error_code;
- return FALSE;
-}
-
-
-static void
-send_message(const char* message)
-{
- unsigned int pos = 0;
- unsigned int len = strlen( message );
- XEvent e;
- int message_num;
- char *error_return;
- unsigned int i;
-
- if (skype_win == None || win == None || disp == NULL)
- {
- //There was an error
- if (message[0] == '#')
- {
- //And we're expecting a response
- sscanf(message, "#%d ", &message_num);
- error_return = g_strdup_printf("#%d ERROR X11", message_num);
- g_thread_create((GThreadFunc)skype_message_received, (void *)error_return, FALSE, NULL);
- }
- return;
- }
-
- memset(&e, 0, sizeof(e));
- e.xclient.type = ClientMessage;
- e.xclient.message_type = message_start; /* first message */
- e.xclient.display = disp;
- e.xclient.window = win;
- e.xclient.format = 8; /* 8-bit values */
-
- do
- {
- for( i = 0; i < 20 && i + pos <= len; ++i )
- e.xclient.data.b[ i ] = message[ i + pos ];
- g_static_mutex_lock(&x11_mutex);
- XSendEvent( disp, skype_win, False, 0, &e );
- g_static_mutex_unlock(&x11_mutex);
-
- e.xclient.message_type = message_continue; /* 2nd or greater message */
- pos += i;
- } while( pos <= len );
-
- //XFlush(disp);
-
- if (x11_error_code == BadWindow)
- {
- //There was an error
- if (message[0] == '#')
- {
- //And we're expecting a response
- sscanf(message, "#%d ", &message_num);
- error_return = g_strdup_printf("#%d ERROR X11_2", message_num);
- g_thread_create((GThreadFunc)skype_message_received, (void *)error_return, FALSE, NULL);
- }
- g_thread_create((GThreadFunc)skype_message_received, g_strdup("CONNSTATUS LOGGEDOUT"), FALSE, NULL);
- return;
- }
-}
-
-static void
-receive_message_loop(void)
-{
- XEvent e;
- GString *msg = NULL;
- char msg_temp[21];
- size_t len;
-
- skype_debug_info("skype_x11", "receive_message_loop started\n");
-
- msg_temp[20] = '\0';
- XSetErrorHandler(x11_error_handler);
- while(run_loop)
- {
- if (!disp)
- {
- skype_debug_error("skype_x11", "display has disappeared\n");
- g_thread_create((GThreadFunc)skype_message_received, g_strdup("CONNSTATUS LOGGEDOUT"), FALSE, NULL);
- break;
- }
-
- Bool event_bool;
- g_static_mutex_lock(&x11_mutex);
- event_bool = XCheckTypedEvent(disp, ClientMessage, &e);
- g_static_mutex_unlock(&x11_mutex);
- if (!event_bool)
- {
- g_thread_yield();
- usleep(1000);
- //XPeekEvent(disp, &e);
- //sleep(1);
- continue;
- }/*
- XNextEvent(disp, &e);
- printf("skype event: %d (clientmessage: %d)\n", e.type, ClientMessage);
- if (e.type != ClientMessage)
- continue;*/
-
- strncpy(msg_temp, e.xclient.data.b, 20);
- len = strlen(msg_temp);
- if (e.xclient.message_type == message_start)
- msg = g_string_new_len(msg_temp, len);
- else if (e.xclient.message_type == message_continue)
- msg = g_string_append_len(msg, msg_temp, len);
- else
- {
- skype_debug_info("skype_x11", "unknown message type: %d\n", e.xclient.message_type);
- if (disp)
- {
- g_static_mutex_lock(&x11_mutex);
- XFlush(disp);
- g_static_mutex_unlock(&x11_mutex);
- }
- continue;
- }
- if (len < 20)
- {
- g_thread_create((GThreadFunc)skype_message_received, (void *)g_string_free(msg, FALSE), FALSE, NULL);
- if (disp)
- {
- g_static_mutex_lock(&x11_mutex);
- XFlush(disp);
- g_static_mutex_unlock(&x11_mutex);
- }
- }
- }
-}
-
-static void
-hide_skype()
-{
-
-}
-
-static gboolean
-exec_skype()
-{
-#ifdef INSTANTBIRD
- return FALSE;
-#else
- GError *error;
-
-#ifdef USE_XVFB_SERVER
- PurpleAccount *acct = NULL;
- int skype_stdin;
- gchar **skype_list;
- gchar *command;
-
- if (!getenv("SKYPEDISPLAY"))
- setenv("SKYPEDISPLAY", ":25", 0);
- unsetenv("DBUS_SESSION_BUS_ADDRESS");
- command = g_strconcat("Xvfb ",
- //"Xnest ", //Uncomment if using Xnest
- getenv("SKYPEDISPLAY"),
- " -ac -terminate -tst -xinerama",
- " -render -shmem -screen 0 320x240x16", //Dont use me if using Xnest
- NULL);
- if (g_spawn_command_line_async(command, NULL))
- {
- acct = skype_get_account(NULL);
- skype_debug_info("skype_x11", "acct: %d\n", acct);
- if (acct && acct->username && acct->username[0] != '\0' &&
- acct->password && acct->password[0] != '\0')
- {
- g_free(command);
- command = g_strconcat("skype --pipelogin -display ",
- getenv("SKYPEDISPLAY"),
- NULL);
- g_shell_parse_argv(command, NULL, &skype_list, NULL);
- if (g_spawn_async_with_pipes(NULL, skype_list, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &skype_stdin, NULL, NULL, NULL))
- {
- g_strfreev(skype_list);
- write(skype_stdin, acct->username, strlen(acct->username));
- write(skype_stdin, " ", 1);
- write(skype_stdin, acct->password, strlen(acct->password));
- write(skype_stdin, "\n", 1);
- fsync(skype_stdin);
- skype_debug_info("skype_x11", "pipelogin worked\n");
- g_free(command);
- return TRUE;
- }
- g_strfreev(skype_list);
- }
- }
- g_free(command);
-#endif
-
- if (g_spawn_command_line_async("skype --disable-cleanlooks", &error))
- {
- return TRUE;
- } else {
- skype_debug_error("skype", "Could not start skype: %s\n", error->message);
- return FALSE;
- }
-#endif
-}
-
-static gboolean
-is_skype_running()
-{
- const gchar *temp;
- int pid;
- gchar* stat_path;
- FILE *fh;
- gchar exec_name[16];
- struct stat *statobj = g_new(struct stat, 1);
- //open /proc
- GDir *procdir = g_dir_open("/proc", 0, NULL);
- //go through directories that are numbers
- while((temp = g_dir_read_name(procdir)))
- {
- pid = atoi(temp);
- if (!pid)
- continue;
- // /proc/{pid}/stat contains lots of juicy info
- stat_path = g_strdup_printf("/proc/%d/stat", pid);
- fh = fopen(stat_path, "r");
- if (!fh)
- {
- g_free(stat_path);
- continue;
- }
- pid = fscanf(fh, "%*d (%15[^)]", exec_name);
- fclose(fh);
- if (!g_str_equal(exec_name, "skype"))
- {
- g_free(stat_path);
- continue;
- }
- //get uid/owner of stat file by using fstat()
- g_stat(stat_path, statobj);
- g_free(stat_path);
- //compare uid/owner of stat file (in g_stat->st_uid) to getuid();
- if (statobj->st_uid == getuid())
- {
- //this copy of skype was started by us
- g_dir_close(procdir);
- g_free(statobj);
- return TRUE;
- }
- }
- g_dir_close(procdir);
- g_free(statobj);
- return FALSE;
-}
-
diff --git a/theme b/theme
deleted file mode 100644
index 61751ac..0000000
--- a/theme
+++ /dev/null
@@ -1,698 +0,0 @@
-#put this theme in its own emotes directory
-#eg /usr/share/pixmaps/pidgin/emotes/skype
-#or C:\Program Files\Pidgin\pixmaps\pidgin\emotes\skype
-
-Name=Default-with-Skype
-Description=Pidgin smileys including Skype
-Icon=../../protocols/22/skype.png
-Author=Hylke Bons
-
-# Default smileys
-[default]
-../default/happy.png :) :-)
-../default/excited.png :-D :-d :D :d
-../default/sad.png :-( :(
-../default/wink.png ;-) ;)
-../default/tongue.png :P :p :-P :-p
-../default/shocked.png =-O =-o
-../default/kiss.png :-*
-../default/glasses-cool.png 8-)
-../default/embarrassed.png :-[
-../default/crying.png :'( :'-(
-../default/thinking.png :-/ :-\\
-../default/angel.png O:-) o:-)
-../default/shut-mouth.png :-X
-../default/moneymouth.png :-$
-../default/foot-in-mouth.png :-!
-../default/shout.png >:o >:O
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-
-[XMPP]
-# Following XEP-0038 + GTalk + our default set, in default set order
-# The GTalk strings come from ticket #3307.
-../default/happy.png :) :-) =)
-../default/excited.png :-D :-d :D :d =D =d
-../default/sad.png :-( :(
-../default/wink.png ;-) ;) ;^)
-../default/tongue.png :P :p :-P :-p
-../default/shocked.png =-O =-o :-O :-o
-../default/kiss.png :kiss: :-*
-../default/glasses-cool.png 8-) B-)
-../default/embarrassed.png :-[
-../default/crying.png :'-( :'(
-../default/thinking.png :-/ :-\\
-../default/angel.png O:-) o:-)
-../default/shut-mouth.png :-X
-../default/moneymouth.png :-$
-../default/foot-in-mouth.png :-!
-../default/shout.png >:o >:O
-
-# Following XEP-0038 + GTalk
-../default/angry.png >:-( >:( X-( x-(
-../default/good.png :yes:
-../default/bad.png :no:
-../default/stop.png :wait:
-../default/rose.png @->-- :rose:
-../default/phone.png :telephone:
-../default/mail.png :email:
-../default/lamp.png :jabber:
-../default/cake.png :cake:
-../default/in_love.png :heart: :love: <3
-../default/love-over.png :brokenheart:
-../default/musical-note.png :music:
-../default/beer.png :beer:
-../default/coffee.png :coffee:
-../default/coins.png :money:
-../default/moon.png :moon:
-../default/sun.png :sun:
-../default/star.png :star:
-
-# Others
-../default/neutral.png :| :-|
-../default/victory.png \\m/
-
-# Hidden icons from the default set.
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-
-# Following AIM 6.1
-[AIM]
-../default/happy.png :-) :)
-../default/wink.png ;-) ;)
-../default/sad.png :-( :(
-../default/tongue.png :-P :p :P :-p
-../default/shocked.png =-O =-o
-../default/kiss.png :-*
-../default/shout.png >:o
-../default/excited.png :-D :D
-../default/moneymouth.png :-$
-../default/foot-in-mouth.png :-!
-../default/embarrassed.png :-[
-../default/angel.png O:-)
-../default/thinking.png :-\\ :-/
-../default/crying.png :'(
-../default/shut-mouth.png :-X
-../default/glasses-cool.png 8-)
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-
-# Following Windows Live Messenger 8.1
-[MSN]
-../default/happy.png :) :-)
-../default/excited.png :D :d :-D :-d
-../default/wink.png ;) ;-)
-../default/shocked.png :-O :-o :O :o
-../default/tongue.png :-P :P :-p :p
-../default/glasses-cool.png (H) (h)
-../default/angry.png :@ :-@
-../default/embarrassed.png :$ :-$
-../default/confused.png :S :s :-S :-s
-../default/sad.png :( :-(
-../default/crying.png :'(
-../default/neutral.png :| :-|
-../default/devil.png (6)
-../default/angel.png (A) (a)
-../default/in_love.png (L) (l)
-../default/love-over.png (U) (u)
-../default/msn.png (M) (m)
-../default/cat.png (@)
-../default/dog.png (&)
-../default/moon.png (S)
-../default/star.png (*)
-../default/film.png (~)
-../default/musical-note.png (8)
-../default/mail.png (E) (e)
-../default/rose.png (F) (f)
-../default/rose-dead.png (W) (w)
-../default/clock.png (O) (o)
-../default/kiss.png (K) (k)
-../default/present.png (G) (g)
-../default/cake.png (^)
-../default/camera.png (P) (p)
-../default/lamp.png (I) (i)
-../default/coffee.png (C) (c)
-../default/phone.png (T) (t)
-../default/hug-left.png ({)
-../default/hug-right.png (})
-../default/beer.png (B) (b)
-../default/drink.png (D) (d)
-../default/boy.png (Z) (z)
-../default/girl.png (X) (x)
-../default/good.png (Y) (y)
-../default/bad.png (N) (n)
-../default/vampire.png :[ :-[
-../default/goat.png (nah)
-../default/sun.png (#)
-../default/rainbow.png (R) (r)
-../default/quiet.png :-#
-../default/teeth.png 8o|
-../default/glasses-nerdy.png 8-|
-../default/sarcastic.png ^o)
-../default/secret.png :-*
-../default/sick.png +o(
-../default/snail.png (sn)
-../default/turtle.png (tu)
-../default/plate.png (pl)
-../default/bowl.png (||)
-../default/pizza.png (pi)
-../default/soccerball.png (so)
-../default/car.png (au)
-../default/airplane.png (ap)
-../default/umbrella.png (um)
-../default/island.png (ip)
-../default/computer.png (co)
-../default/mobile.png (mp)
-../default/brb.png (brb)
-../default/rain.png (st)
-../default/highfive.png (h5)
-../default/coins.png (mo)
-../default/sheep.png (bah)
-../default/dont-know.png :^)
-../default/thinking.png *-)
-../default/thunder.png (li)
-../default/party.png <:o)
-../default/eyeroll.png 8-)
-../default/sleepy.png |-)
-../default/bunny.png ('.')
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-# Hidden MSN emotes
-../default/cigarette.png (ci) (CI)
-../default/handcuffs.png (%)
-../default/console.png (xx) (XX)
-../default/fingers-crossed.png (yn) (YN)
-
-
-# Following QQ 2006
-[QQ]
-../default/shocked.png /:O /jy /surprised
-../default/curl-lip.png /:~ /pz /curl_lip
-../default/desire.png /:* /se /desire
-../default/dazed.png /:| /dazed
-../default/party.png /8-) /dy /revel
-../default/crying.png /:< /ll /cry
-../default/bashful.png /:$ /hx /bashful
-../default/shut-mouth.png /:X /bz /shut_mouth
-../default/sleeping.png /:Z /shui /sleep
-../default/weep.png /:'( /dk /weep
-../default/embarrassed.png /:-| /gg /embarassed
-../default/pissed-off.png /:@ /fn /pissed_off
-../default/act-up.png /:P /tp /act_up
-../default/excited.png /:D /cy /toothy_smile
-../default/happy.png /:) /wx /small_smile
-../default/sad.png /:( /ng /sad
-../default/glasses-cool.png /:+ /kuk /cool
-../default/doctor.png /:# /feid /SARS
-../default/silly.png /:Q /zk /crazy
-../default/sick.png /:T /tu /vomit
-../default/snicker.png /;p /tx /titter
-../default/cute.png /;-D /ka /cute
-../default/disdain.png /;d /by /disdain
-../default/arrogant.png /;o /am /arrogant
-../default/starving.png /:g /jie /starving
-../default/sleepy.png /|-) /kun /sleepy
-../default/terror.png /:! /jk /terror
-../default/hot.png /:L /sweat
-../default/smirk.png /:> /hanx /smirk
-../default/soldier.png /:; /db /soldier
-../default/struggle.png /;f /fendou /struggle
-../default/curse.png /:-S /zhm /curse
-../default/question.png /? /yiw /question
-../default/quiet.png /;x /xu /shh
-../default/hypnotized.png /;@ /yun /dizzy
-../default/excruciating.png /:8 /zhem /excrutiating
-../default/freaked-out.png /;! /shuai /freaked_out
-../default/skeleton.png /!!! /kl /skeleton
-../default/hammer.png /xx /qiao /hammer
-../default/bye.png /bye /zj /bye
-../default/go-away.png /go /shan /go
-../default/afraid.png /shake /fad /shake
-../default/amorous.png /love /aiq /love
-../default/jump.png /jump /tiao /jump
-../default/search.png /find /zhao /search
-../default/lashes.png /& /mm /beautiful_eyebrows
-../default/pig.png /pig /zt /pig
-../default/cat.png /cat /mm /cat
-../default/dog.png /dog /xg /dog
-../default/hug-left.png /hug /yb /hug
-../default/coins.png /$ /qianc /money
-../default/lamp.png /! /dp /lightbulb
-../default/bowl.png /cup /bei /cup
-../default/cake.png /cake /dg /cake
-../default/thunder.png /li /shd /lightning
-../default/bomb.png /bome /zhd /bomb
-../default/knife.png /kn /dao /knife
-../default/soccerball.png /footb /zq /soccer
-../default/musical-note.png /music /yy /music
-../default/poop.png /shit /bb /shit
-../default/coffee.png /coffee /kf /coffee
-../default/hungry.png /eat /fan /eat
-../default/pill.png /pill /yw /pill
-../default/rose.png /rose /mg /rose
-../default/wilt.png /fade /dx /wilt
-../default/kiss.png /kiss /wen /kiss
-../default/in_love.png /heart /xin /heart
-../default/love-over.png /break /xs /broken_heart
-../default/meeting.png /meeting /hy /meeting
-../default/present.png /gift /lw /gift
-../default/phone.png /phone /dh /phone
-../default/clock.png /time /sj /time
-../default/mail.png /email /yj /email
-../default/tv.png /TV /ds /TV
-../default/sun.png /sun /ty /sun
-../default/moon.png /moon /yl /moon
-../default/good.png /strong /qiang /thumbs_up
-../default/bad.png /weak /ruo /thumbs_down
-../default/handshake.png /share /ws /handshake
-../default/victory.png /v /shl /victory
-../default/beauty.png /<J> /mn /beauty
-../default/qq.png /<QQ> /qz /qq
-../default/blowkiss.png /<L> /fw /blow_kiss
-../default/angry.png /<O> /oh /angry
-../default/liquor.png /<B> /bj /baijiu
-../default/can.png /<U> /qsh /soda
-../default/watermelon.png /<W> /xigua /watermelon
-../default/rain.png /<!!> /xy /rain
-../default/cloudy.png /<~> /duoy /cloudy
-../default/snowman.png /<Z> /xr /snowman
-../default/star.png /<*> /xixing /star
-../default/girl.png /<00> /nv /woman
-../default/boy.png /<11> /nan /man
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-
-# Following ICQ 6.0
-[ICQ]
-../default/happy.png :-) :)
-../default/neutral.png :-$
-../default/sad.png :-( :(
-../default/shocked.png =-O
-../default/wink.png ;-) ;)
-../default/tongue.png :-P :P :-p :p
-../default/music.png [:-}
-../default/laugh.png *JOKINGLY*
-../default/sleeping.png *TIRED*
-../default/crying.png :'( :'-(
-../default/sick.png :-!
-../default/kissed.png *KISSED*
-../default/stop.png *STOP*
-../default/kiss.png :-{} :-*
-../default/kissing.png *KISSING*
-../default/victory.png *YAHOO*
-../default/silly.png %)
-../default/embarrassed.png :-[
-../default/devil.png ]:->
-../default/angel.png O:-)
-../default/rose.png @}->--
-../default/shut-mouth.png :-X :X :-x :x
-../default/bomb.png @=
-../default/thinking.png :-\\ :-/
-../default/good.png *THUMBS\ UP*
-../default/shout.png >:o >:O :-@
-../default/beer.png *DRINK*
-../default/excited.png :-D :D
-../default/glasses-cool.png 8-)
-../default/amorous.png *IN\ LOVE*
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-
-# Following Yahoo! Messenger 8.1
-[Yahoo]
-../default/happy.png :) :-)
-../default/question.png :-/ :-\\
-../default/shocked.png :-O :O :-o :o
-../default/devil.png >:)
-../default/angel.png O:-) o:-) 0:-)
-../default/sick.png :-&
-../default/sleepy.png (:|
-../default/hypnotized.png @-)
-../default/on-the-phone.png :)]
-../default/sad.png :( :-(
-../default/amorous.png :x :-x :X :-X
-../default/angry.png X-( x-( X( x(
-../default/crying.png :((
-../default/glasses-nerdy.png :-B :-b
-../default/quiet.png :-$
-../default/drool.png =P~ =p~
-../default/lying.png :^O :^o
-../default/call-me.png :-c
-../default/wink.png ;) ;-)
-../default/embarrassed.png :">
-../default/mean.png :-> :>
-../default/laugh.png :)) :-))
-../default/bye.png =;
-../default/arrogant.png [-(
-../default/thinking.png :-?
-../default/waiting.png :-w :-W
-../default/at-wits-end.png ~x( ~X(
-../default/excited.png :D :-D :d :-d
-../default/tongue.png :-P :P :-p :p
-../default/glasses-cool.png B-) b-)
-../default/neutral.png :| :-|
-../default/sleeping.png I-) i-) |-)
-../default/clown.png :o) :O)
-../default/doh.png #-o #-O
-../default/weep.png :-<
-../default/go-away.png :-h
-../default/lashes.png ;;)
-../default/kiss.png :-* :*
-../default/confused.png :-S :-s
-../default/sarcastic.png /:)
-../default/eyeroll.png 8-|
-../default/silly.png 8-}
-../default/clap.png =D> =d>
-../default/mad-tongue.png >:P >:p
-../default/time-out.png :-t :-T
-../default/hug-left.png >:D< >:d<
-../default/love-over.png =((
-../default/hot.png #:-S #:-s
-../default/rotfl.png =)) :-j :-J
-../default/loser.png L-) l-)
-../default/party.png <:-P <:-p
-../default/nervous.png :-SS :-Ss :-sS :-ss
-../default/cowboy.png <):)
-../default/desire.png 8->
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-# Hidden Yahoo emotes
-../default/alien.png =:) >-)
-../default/beat-up.png b-( B-(
-../default/chicken.png ~:>
-../default/coffee.png ~o) ~O)
-../default/cow.png 3:-O 3:-o
-../default/dance.png \\:D/ \\:d/
-../default/rose.png @};-
-../default/dont-know.png :-L :-l
-../default/skeleton.png 8-X 8-x
-../default/lamp.png *-:)
-../default/monkey.png :(|)
-../default/coins.png $-)
-../default/peace.png :)>-
-../default/pig.png :@)
-../default/pray.png [-o< [-O<
-../default/pumpkin.png (~~)
-../default/shame.png [-X [-x
-../default/flag.png **==
-../default/clover.png %%-
-../default/musical-note.png :-"
-../default/giggle.png ;))
-../default/worship.png ^:)^
-../default/star.png (*)
-../default/waving.png >:/
-../default/talktohand.png :-@
-
-# Only available after activating the Yahoo! Fighter IMVironment
-../default/male-fighter1.png o-> O->
-../default/male-fighter2.png o=> O=>
-../default/female-fighter.png o-+ O-+
-../default/yin-yang.png (%)
-
-# Following Yahoo! Messenger 8.1
-[Yahoo JAPAN]
-../default/happy.png :) :-)
-../default/question.png :-/ :-\\
-../default/shocked.png :-O :O :-o :o
-../default/devil.png >:)
-../default/angel.png O:-) o:-) 0:-)
-../default/sick.png :-&
-../default/sleepy.png (:|
-../default/hypnotized.png @-)
-../default/on-the-phone.png :)]
-../default/sad.png :( :-(
-../default/amorous.png :x :-x :X :-X
-../default/angry.png X-( x-( X( x(
-../default/crying.png :((
-../default/glasses-nerdy.png :-B :-b
-../default/quiet.png :-$
-../default/drool.png =P~ =p~
-../default/lying.png :^O :^o
-../default/call-me.png :-c
-../default/wink.png ;) ;-)
-../default/embarrassed.png :">
-../default/mean.png :-> :>
-../default/laugh.png :)) :-))
-../default/bye.png =;
-../default/arrogant.png [-(
-../default/thinking.png :-?
-../default/waiting.png :-w :-W
-../default/at-wits-end.png ~x( ~X(
-../default/excited.png :D :-D :d :-d
-../default/tongue.png :-P :P :-p :p
-../default/glasses-cool.png B-) b-)
-../default/neutral.png :| :-|
-../default/sleeping.png I-) i-) |-)
-../default/clown.png :o) :O)
-../default/doh.png #-o #-O
-../default/weep.png :-<
-../default/go-away.png :-h
-../default/lashes.png ;;)
-../default/kiss.png :-* :*
-../default/confused.png :-S :-s
-../default/sarcastic.png /:)
-../default/eyeroll.png 8-|
-../default/silly.png 8-}
-../default/clap.png =D> =d>
-../default/mad-tongue.png >:P >:p
-../default/time-out.png :-t :-T
-../default/hug-left.png >:D< >:d<
-../default/love-over.png =((
-../default/hot.png #:-S #:-s
-../default/rotfl.png =)) :-j :-J
-../default/loser.png L-) l-)
-../default/party.png <:-P <:-p
-../default/nervous.png :-SS :-Ss :-sS :-ss
-../default/cowboy.png <):)
-../default/desire.png 8->
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-# Hidden Yahoo emotes
-../default/alien.png =:) >-)
-../default/beat-up.png b-( B-(
-../default/chicken.png ~:>
-../default/coffee.png ~o) ~O)
-../default/cow.png 3:-O 3:-o
-../default/dance.png \\:D/ \\:d/
-../default/rose.png @};-
-../default/dont-know.png :-L :-l
-../default/skeleton.png 8-X 8-x
-../default/lamp.png *-:)
-../default/monkey.png :(|)
-../default/coins.png $-)
-../default/peace.png :)>-
-../default/pig.png :@)
-../default/pray.png [-o< [-O<
-../default/pumpkin.png (~~)
-../default/shame.png [-X [-x
-../default/flag.png **==
-../default/clover.png %%-
-../default/musical-note.png :-"
-../default/giggle.png ;))
-../default/worship.png ^:)^
-../default/star.png (*)
-../default/waving.png >:/
-../default/talktohand.png :-@
-
-# Only available after activating the Yahoo! Fighter IMVironment
-../default/male-fighter1.png o-> O->
-../default/male-fighter2.png o=> O=>
-../default/female-fighter.png o-+ O-+
-../default/yin-yang.png (%)
-
-
-# Following MySpaceIM Beta 1.0.697.0
-[MySpaceIM]
-../default/excited.png :D :-D
-../default/devil.png }:)
-../default/confused.png :Z
-../default/glasses-nerdy.png B)
-../default/bulgy-eyes.png %)
-../default/freaked-out.png :E
-../default/happy.png :) :-)
-../default/amorous.png :X
-../default/laugh.png :))
-../default/mohawk.png -:
-../default/mad-tongue.png X(
-../default/messed.png X)
-../default/glasses-nerdy.png Q)
-../default/doh.png :G
-../default/pirate.png P)
-../default/shocked.png :O
-../default/sidefrown.png :{
-../default/sinister.png :B
-../default/smirk.png :,
-../default/neutral.png :|
-../default/tongue.png :P :p
-../default/pissed-off.png B|
-../default/wink.png ;-) ;)
-../default/sad.png :[
-../default/kiss.png :x
-! ../default/skywalker.png C:-) c:-) C:) c:)
-! ../default/monkey.png :-(|) :(|) 8-|)
-! ../default/cyclops.png O-) o-)
-
-
-# MXit standard emoticons
-[MXit]
-../default/happy.png :-) :)
-../default/sad.png :-( :(
-../default/wink.png ;-) ;)
-../default/excited.png :-D :D :-> :>
-../default/neutral.png :-| :|
-../default/shocked.png :-O :O
-../default/tongue.png :-P :P
-../default/embarrassed.png :-$ :$
-../default/glasses-cool.png 8-)
-../default/in_love.png (H)
-../default/rose.png (F)
-### Added in v3.0
-../default/boy.png (m)
-../default/girl.png (f)
-../default/star.png (*)
-../default/chilli.png (c)
-../default/kiss.png (x)
-../default/lamp.png (i)
-../default/pissed-off.png :e :-e
-../default/shut-mouth.png :-x :x
-../default/thunder.png (z)
-../default/coffee.png (U)
-../default/mrgreen.png (G)
-### Added in v5.0
-../default/sick.png :o(
-../default/excruciating.png :-{ :{
-../default/amorous.png :-} :}
-../default/eyeroll.png 8-o 8o
-../default/crying.png :'(
-../default/thinking.png :-? :?
-../default/drool.png :-~ :~
-../default/sleeping.png :-z :z
-../default/lying.png :L)
-../default/glasses-nerdy.png 8-| 8|
-../default/pirate.png P-)
-### Added in v5.9.7
-../default/bored.png :-[ :[
-../default/cold.png :-< :<
-../default/confused.png :-, :,
-../default/hungry.png :-C :C
-../default/stressed.png :-s :s
-
-# Following Skype 2.0 for Linux
-[Skype]
-../default/happy.png :) :-) :=) (smile)
-../default/sad.png :( :-( :=( (sad)
-../default/excited.png :D :-D :=D :d :-d :=d (laugh)
-../default/glasses-cool.png 8) 8-) 8=) B) B-) B=) (cool)
-../default/shocked.png :O :-O :=O :o :-o :=o (surprised)
-../default/wink.png ;) ;-) ;=) (wink)
-../default/crying.png ;( ;-( ;=( (cry)
-../default/hot.png (sweat) (:|
-../default/neutral.png :| :-| :=| (speechless)
-../default/kiss.png :* :-* :=* (kiss)
-../default/tongue.png :P :-P :=P :p :-p :=p (tongueout)
-../default/embarrassed.png (blush) :$ :-$ :=$ :">
-../default/dont-know.png :^) (wonder)
-../default/sleeping.png |-) I-) I=) (snooze)
-../default/neutral.png |-( |( |=( (dull)
-../default/amorous.png (inlove)
-../default/mean.png ]:) >:) (grin)
-! ../default/secret.png (talk)
-../default/sleepy.png (yawn) |-()
-../default/sick.png (puke) :& :-& :=&
-../default/doh.png (doh) (facepalm) (fail)
-../default/angry.png :@ :-@ :=@ x( x-( X( X-( x=( X=( (angry)
-../default/go-away.png (wasntme)
-../default/party.png (party)
-../default/confused.png :S :s :-s :-S :=s :=S
-../default/nervous.png (worry)
-../default/snicker.png (mm) (mmm) (mmmm)
-../default/glasses-nerdy.png 8-| B-| 8| B| 8=| B=| (nerd)
-../default/quiet.png :x :-x :X :-X :# :-# :=x :=X :=#
-../default/bye.png (hi) (wave)
-! ../default/call-me.png (call) (t)
-../default/devil.png (devil)
-../default/angel.png (angel) (a)
-../default/desire.png (envy) (v)
-../default/stop.png (wait)
-../default/hug-left.png (hug) (bear)
-../default/beauty.png (makeup) (kate)
-../default/giggle.png (chuckle) (giggle)
-../default/clap.png (clap)
-../default/thinking.png (think) :-? :? :=?
-../default/worship.png (bow)
-../default/rotfl.png (rofl)
-../default/hot.png (whew)
-../default/curl-lip.png (happy)
-../default/smirk.png (smirk)
-../default/happy.png (nod)
-../default/wilt.png (shake)
-! ../default/beat-up.png (punch)
-../default/good.png (y) (Y) (ok) (yes)
-../default/bad.png (n) (N) (no)
-../default/handshake.png (handshake)
-../default/in_love.png (h) (H) (l) (L) (heart) (love)
-! ../default/love-over.png (u) (U) (brokenheart)
-! ../default/mail.png (e) (m) (mail)
-../default/rain.png (rain) (st) (london)
-../default/sun.png (sun)
-! ../default/clock.png (o) (O) (time) (clock)
-../default/musical-note.png (music)
-! ../default/film.png (~) (film) (movie)
-! ../default/mobile.png (mp) (ph) (phone)
-../default/coffee.png (coffee) (c)
-../default/pizza.png (pi) (pizza)
-../default/cake.png (^) (cake)
-../default/beer.png (beer) (b)
-../default/terror.png (bandit)
-! ../default/at-wits-end.png (headbang) (banghead)
-! ../default/curse.png (swear)
-../default/rose.png (F) (f) (flower)
-../default/drink.png (d) (D) (drink)
-../default/dance.png (dance) \\o/ \\:D/ \\:d/
-../default/star.png (*) (star)
-! ../default/bulgy-eyes.png (drunk)
-! ../default/cigarette.png (smoking) (smoke) (ci)
-../default/male-fighter2.png (ninja) (j)
-../default/afraid.png (tmi)
-../default/ghost.png (emo)
-! ../default/goat.png (malthe)
-! ../default/dog.png (toivo)
-! ../default/mohawk.png (rock)
-../default/turtle.png (bug)
-../default/loser.png (finger)
-! ../default/hypnotized.png (fubar)
-! ../small/bathing.png (poolparty)
-../default/bunny.png (heidy)
-../default/highfive.png (highfive) (hifive) (h5)
-../default/fingers-crossed.png (fingers) (fingerscrossed) (yn)
-../default/talktohand.png (lalala) (lala) (notlistening)
-../default/waiting.png (waiting) (forever) (impatience)
-../default/snail.png (tumbleweed)
-! ../default/computer.png (wfh)
-../default/coins.png (cash) (mo) ($)
-! ../../protocols/22/myspace.png (myspace)
-! ../../protocols/22/skype.png (skype) (ss)
-! ../default/soccerball.png (soccer)
-../default/excruciating.png (wtf)
-! ../default/cowboy.png (oliver)
-../default/moon.png (mooning)
-! ../default/camera.png (zilmer) (priidu)
-! ../default/lashes.png (hollest)
-! ../default/flag.png (flag:US)
-../default/waving.png (flex)
-