adium/adium
Clone
Summary
Browse
Changes
Graph
Update build.sh to find the 10.6 SDK with Xcode 4.3. However, hardcode CC to gcc (from MacPorts).
2012-05-08, Thijs Alkemade
67a03e758cf8
Update build.sh to find the 10.6 SDK with Xcode 4.3. However, hardcode CC to gcc (from MacPorts).
Building at least GLib with clang never worked right for me.
/*
* Adium is the legal property of its developers, whose names are listed in the copyright file included
* with this source distribution.
*
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program; if not,
* write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <Adium/AIAccountControllerProtocol.h>
#import "AIAccountMenuAccessPlugin.h"
#import <Adium/AIMenuControllerProtocol.h>
#import <Adium/AIAccount.h>
#import <AIUtilities/AIStringAdditions.h>
#import <AIUtilities/AIMenuAdditions.h>
#import "AIGuestAccountWindowController.h"
@interface
AIAccountMenuAccessPlugin
()
-
(
void
)
showGuestAccountWindow
:
(
id
)
sender
;
-
(
void
)
connectAllAccounts:
(
NSMenuItem
*
)
menuItem
;
@end
/*!
* @class AIAccountMenuAccessPlugin
* @brief Provide menu access to account connection/disconnect
*/
@implementation
AIAccountMenuAccessPlugin
/*!
* @brief Install the plugin
*/
-
(
void
)
installPlugin
{
accountMenu
=
[[
AIAccountMenu
accountMenuWithDelegate
:
self
submenuType
:
AIAccountOptionsSubmenu
showTitleVerbs
:
YES
]
retain
];
NSMenuItem
*
menuItem
=
[[
NSMenuItem
alloc
]
initWithTitle
:
[
AILocalizedString
(
@"Connect a Guest Account"
,
"Menu item title which opens the window for adding and connecting a guest (temporary) account"
)
stringByAppendingEllipsis
]
target
:
self
action
:
@selector
(
showGuestAccountWindow
:
)
keyEquivalent
:
@""
];
[
adium
.
menuController
addMenuItem
:
menuItem
toLocation
:
LOC_File_Additions
];
[
menuItem
release
];
}
/*!
* @brief Uninstall Plugin
*/
-
(
void
)
uninstallPlugin
{
[
accountMenu
release
];
}
/*!
* @brief Add account menu items to our location
*
* Implemented as required by the AccountMenuPlugin protocol.
*
* @param menuItemArray An <tt>NSArray</tt> of <tt>NSMenuItem</tt> objects to be added to the menu
*/
-
(
void
)
accountMenu:
(
AIAccountMenu
*
)
inAccountMenu
didRebuildMenuItems:
(
NSArray
*
)
menuItems
{
NSMenuItem
*
menuItem
;
//Remove any existing menu items
for
(
menuItem
in
installedMenuItems
)
{
[
adium
.
menuController
removeMenuItem
:
menuItem
];
}
//Add the new menu items
for
(
menuItem
in
menuItems
)
{
[
adium
.
menuController
addMenuItem
:
menuItem
toLocation
:
LOC_File_Accounts
];
}
//Remember the installed items so we can remove them later
[
installedMenuItems
release
];
installedMenuItems
=
[
menuItems
retain
];
}
-
(
void
)
accountMenu:
(
AIAccountMenu
*
)
inAccountMenu
didSelectAccount:
(
AIAccount
*
)
inAccount
{
[
inAccount
toggleOnline
];
}
-
(
BOOL
)
accountMenuShouldIncludeAddAccountsMenu:
(
AIAccountMenu
*
)
inAccountMenu
{
return
YES
;
}
-
(
BOOL
)
accountMenuShouldIncludeDisabledAccountsMenu:
(
AIAccountMenu
*
)
inAccountMenu
{
return
YES
;
}
-
(
NSMenuItem
*
)
accountMenuSpecialMenuItem:
(
AIAccountMenu
*
)
inAccountMenu
{
NSMenuItem
*
menuItem
=
[[
NSMenuItem
allocWithZone
:
[
NSMenu
menuZone
]]
initWithTitle
:
AILocalizedString
(
@"Connect All Accounts"
,
nil
)
target
:
self
action
:
@selector
(
connectAllAccounts
:
)
keyEquivalent
:
@"R"
];
[
menuItem
setKeyEquivalentModifierMask
:
NSCommandKeyMask
];
return
[
menuItem
autorelease
];
}
/*!
* @brief Connects all offline, enabled acounts
*/
-
(
void
)
connectAllAccounts:
(
NSMenuItem
*
)
menuItem
{
for
(
AIAccount
*
account
in
adium
.
accountController
.
accounts
)
{
if
(
account
.
enabled
&&
!
account
.
online
)
[
account
setShouldBeOnline
:
YES
];
}
}
#pragma mark Guest account access
-
(
void
)
showGuestAccountWindow:
(
id
)
sender
{
[
AIGuestAccountWindowController
showGuestAccountWindow
];
}
@end