📄 windowregistry.mm
字号:
/* * LumaQQ - Cross platform QQ client, special edition for Mac * * Copyright (C) 2007 luma <stubma@163.com> * * 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 "Constants.h"#import "WindowRegistry.h"#import "MainWindowController.h"#import "AboutWindowController.h"#import "PreferenceCache.h"#import "ClusterAuthWindowController.h"#import "LuminanceWindowController.h"#import "UserAuthWindowController.h"#import "QConsoleWindowController.h"@implementation WindowRegistry// registry for Main Window, so it's staticstatic NSMutableDictionary* s_mainWindows = nil;static NSMutableDictionary* s_preferenceWindows = nil;static NSMutableDictionary* s_systemMessageWindows = nil;static AboutWindowController* s_aboutWindowController = nil;static NSMutableDictionary* s_tabIMWindows = nil;static LuminanceWindowController* s_luminanceWindow = nil;static QConsoleWindowController* s_qconsole = nil;+ (void)initialize { s_mainWindows = [[NSMutableDictionary dictionary] retain]; s_preferenceWindows = [[NSMutableDictionary dictionary] retain]; s_systemMessageWindows = [[NSMutableDictionary dictionary] retain]; s_tabIMWindows = [[NSMutableDictionary dictionary] retain];}+ (void)showAboutWindow { if(s_aboutWindowController == nil) { s_aboutWindowController = [[AboutWindowController alloc] init]; [s_aboutWindowController showWindow:self]; } else [[s_aboutWindowController window] orderFront:self];}+ (void)unregisterAboutWindow { s_aboutWindowController = nil;}+ (BOOL)isMainWindowOpened:(UInt32)QQ { return [s_mainWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}+ (MainWindowController*)getMainWindow:(UInt32)QQ { return [s_mainWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (void)registerMainWindow:(UInt32)QQ window:(MainWindowController*)main { [s_mainWindows setObject:main forKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (void)unregisterMainWindow:(UInt32)QQ { [s_mainWindows removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (NSEnumerator*)mainWindowEnumerator { return [s_mainWindows objectEnumerator];}+ (NSArray*)mainWindowArray { return [s_mainWindows allValues];}+ (BOOL)isPreferenceWindowOpened:(UInt32)QQ { return [s_preferenceWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}+ (void)registerPreferenceWindow:(UInt32)QQ window:(PreferenceWindowController*)controller { [s_preferenceWindows setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (void)unregisterPreferenceWindow:(UInt32)QQ { [s_preferenceWindows removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (PreferenceWindowController*)getPreferenceWindow:(UInt32)QQ { return [s_preferenceWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (PreferenceWindowController*)showPreferenceWindow:(MainWindowController*)mainWindowController { UInt32 QQ = [[mainWindowController me] QQ]; if([self isPreferenceWindowOpened:QQ]) { PreferenceWindowController* pwc = [self getPreferenceWindow:QQ]; [pwc showWindow:self]; return pwc; } else { PreferenceWindowController* pwc = [[PreferenceWindowController alloc] initWithMainWindow:mainWindowController]; [self registerPreferenceWindow:QQ window:pwc]; [pwc showWindow:self]; [[pwc window] center]; return pwc; }}+ (BOOL)isSystemMessageWindowOpened:(UInt32)QQ { return [s_systemMessageWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil; }+ (SystemMessageWindowController*)getSystemMessageWindow:(UInt32)QQ { return [s_systemMessageWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (void)registerSystemMessageWindow:(UInt32)QQ window:(SystemMessageWindowController*)controller { [s_systemMessageWindows setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (void)unregisterSystemMessageWindow:(UInt32)QQ { [s_systemMessageWindows removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (SystemMessageWindowController*)showSystemMessageWindow:(MainWindowController*)mainWindowController { UInt32 QQ = [[mainWindowController me] QQ]; if([self isSystemMessageWindowOpened:QQ]) { SystemMessageWindowController* smw = [self getSystemMessageWindow:QQ]; [smw showWindow:self]; return smw; } else { SystemMessageWindowController* smw = [[SystemMessageWindowController alloc] initWithMainWindow:mainWindowController]; [self registerSystemMessageWindow:QQ window:smw]; [smw showWindow:self]; [[smw window] center]; return smw; }}+ (BOOL)isTabIMWindowOpened:(UInt32)QQ { return [s_tabIMWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}+ (void)registerTabIMWindow:(UInt32)QQ window:(TabIMWindowController*)controller { [s_tabIMWindows setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (void)unregisterTabIMWindow:(UInt32)QQ { [s_tabIMWindows removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (TabIMWindowController*)getTabIMWindow:(UInt32)QQ { return [s_tabIMWindows objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}+ (TabIMWindowController*)showTabIMWindow:(MainWindowController*)mainWindowController { UInt32 QQ = [[mainWindowController me] QQ]; if([self isTabIMWindowOpened:QQ]) { TabIMWindowController* tiw = [self getTabIMWindow:QQ]; [[tiw window] orderFront:self]; return tiw; } else { TabIMWindowController* tiw = [[TabIMWindowController alloc] initWithMainWindow:mainWindowController]; [self registerTabIMWindow:QQ window:tiw]; [tiw showWindow:self]; return tiw; }}+ (void)showLuminanceWindow { if(s_luminanceWindow == nil) s_luminanceWindow = [[LuminanceWindowController alloc] init]; [s_luminanceWindow showWindow:self];}+ (void)unregisterLuminanceWindow { s_luminanceWindow = nil;}+ (void)showQConsole { if(s_qconsole == nil) s_qconsole = [[QConsoleWindowController alloc] init]; [s_qconsole showWindow:self];}+ (void)unregisterQConsole { s_qconsole = nil;}- (id) init { self = [super init]; if (self != nil) { m_userInfoWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_searchWizardRegistry = [[NSMutableDictionary dictionary] retain]; m_addFriendWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_joinClusterWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_deleteUserWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_clusterInfoWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_normalIMWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_clusterIMWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_faceManagerWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_mobileIMWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_tempSessionIMWindowRegistry = [[NSMutableDictionary dictionary] retain]; m_tempClusterInfoWindowRegistry = [[NSMutableDictionary dictionary] retain]; } return self;}- (void) dealloc { [m_tempClusterInfoWindowRegistry release]; [m_userInfoWindowRegistry release]; [m_searchWizardRegistry release]; [m_addFriendWindowRegistry release]; [m_joinClusterWindowRegistry release]; [m_deleteUserWindowRegistry release]; [m_clusterInfoWindowRegistry release]; [m_normalIMWindowRegistry release]; [m_clusterIMWindowRegistry release]; [m_faceManagerWindowRegistry release]; [m_mobileIMWindowRegistry release]; [m_tempSessionIMWindowRegistry release]; [super dealloc];}- (BOOL)isSearchWizardOpened:(UInt32)QQ { return [m_searchWizardRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}- (void)registerSearchWizard:(UInt32)QQ window:(SearchWindowController*)controller { [m_searchWizardRegistry setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}- (void)unregisterSearchWizard:(UInt32)QQ { [m_searchWizardRegistry removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (SearchWindowController*)getSearchWizard:(UInt32)QQ { return [m_searchWizardRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (void)showSearchWizard:(UInt32)QQ mainWindow:(MainWindowController*)mainWindowController pageIdentifier:(NSString*)identifier { if([self isSearchWizardOpened:QQ]) { SearchWindowController* sw = [self getSearchWizard:QQ]; [sw showWindow:self]; } else { SearchWindowController* sw = [[SearchWindowController alloc] initWithMainWindowController:mainWindowController]; [sw setInitialIdentifier:identifier]; [self registerSearchWizard:QQ window:sw]; [sw showWindow:self]; }}- (BOOL)isUserInfoWindowOpened:(UInt32)QQ { return [m_userInfoWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}- (void)registerUserInfoWindow:(UInt32)QQ window:(UserInfoWindowController*)controller { [m_userInfoWindowRegistry setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}- (void)unregisterUserInfoWindow:(UInt32)QQ { [m_userInfoWindowRegistry removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (UserInfoWindowController*)getUserInfoWindow:(UInt32)QQ { return [m_userInfoWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (UserInfoWindowController*)showUserInfoWindow:(User*)user mainWindow:(MainWindowController*)mainWindowController { return [self showUserInfoWindow:user cluster:nil mainWindow:mainWindowController];}- (UserInfoWindowController*)showUserInfoWindow:(User*)user cluster:(Cluster*)cluster mainWindow:(MainWindowController*)mainWindowController { if([self isUserInfoWindowOpened:[user QQ]]) { UserInfoWindowController* uiw = [self getUserInfoWindow:[user QQ]]; [uiw showWindow:self]; return uiw; } else { UserInfoWindowController* uiw = [[UserInfoWindowController alloc] initWithMainWindowController:mainWindowController user:user cluster:cluster]; [self registerUserInfoWindow:[user QQ] window:uiw]; [uiw showWindow:self]; return uiw; }}- (BOOL)isAddFriendWindowOpened:(UInt32)QQ { return [m_addFriendWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}- (void)registerAddFriendWindow:(UInt32)QQ window:(AddFriendWindowController*)controller { [m_addFriendWindowRegistry setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}- (void)unregisterAddFriendWindow:(UInt32)QQ { [m_addFriendWindowRegistry removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (AddFriendWindowController*)getAddFriendWindow:(UInt32)QQ { return [m_addFriendWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (AddFriendWindowController*)showAddFriendWindow:(UInt32)QQ mainWindow:(MainWindowController*)mainWindowController { return [self showAddFriendWindow:QQ head:0 nick:kStringEmpty mainWindow:mainWindowController];}- (AddFriendWindowController*)showAddFriendWindow:(UInt32)QQ head:(int)head nick:(NSString*)nick mainWindow:(MainWindowController*)mainWindowController { if([self isAddFriendWindowOpened:QQ]) { AddFriendWindowController* afw = [self getAddFriendWindow:QQ]; [afw showWindow:self]; return afw; } else { AddFriendWindowController* afw = [[AddFriendWindowController alloc] initWithQQ:QQ head:head nick:nick mainWindowController:mainWindowController]; [self registerAddFriendWindow:QQ window:afw]; [afw showWindow:self]; return afw; }}- (BOOL)isJoinClusterWindowOpened:(UInt32)m_internalId { return [m_joinClusterWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:m_internalId]] != nil;}- (void)registerJoinClusterWindow:(UInt32)m_internalId window:(JoinClusterWindowController*)controller { [m_joinClusterWindowRegistry setObject:controller forKey:[NSNumber numberWithUnsignedInt:m_internalId]];}- (void)unregisterJoinClusterWindow:(UInt32)m_internalId { [m_joinClusterWindowRegistry removeObjectForKey:[NSNumber numberWithUnsignedInt:m_internalId]];}- (JoinClusterWindowController*)getJoinClusterWindow:(UInt32)m_internalId { return [m_joinClusterWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:m_internalId]];}- (void)showJoinClusterWindow:(UInt32)m_internalId object:(id)object mainWindow:(MainWindowController*)mainWindowController { if([self isJoinClusterWindowOpened:m_internalId]) { JoinClusterWindowController* jcw = [self getJoinClusterWindow:m_internalId]; [jcw showWindow:self]; } else { JoinClusterWindowController* jcw = [[JoinClusterWindowController alloc] initWithObject:object mainWindow:mainWindowController]; [self registerJoinClusterWindow:m_internalId window:jcw]; [jcw showWindow:self]; }}- (BOOL)isDeleteUserWindowOpened:(UInt32)QQ { return [m_deleteUserWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]] != nil;}- (void)registerDeleteUserWindow:(UInt32)QQ window:(DeleteUserWindowController*)controller { [m_deleteUserWindowRegistry setObject:controller forKey:[NSNumber numberWithUnsignedInt:QQ]];}- (void)unregisterDeleteUserWindow:(UInt32)QQ { [m_deleteUserWindowRegistry removeObjectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (DeleteUserWindowController*)getDeleteUserWindow:(UInt32)QQ { return [m_deleteUserWindowRegistry objectForKey:[NSNumber numberWithUnsignedInt:QQ]];}- (DeleteUserWindowController*)showDeleteUserWindow:(User*)user mainWindow:(MainWindowController*)mainWindowController { if([self isDeleteUserWindowOpened:[user QQ]]) { DeleteUserWindowController* duw = [self getDeleteUserWindow:[user QQ]]; [duw showWindow:self]; return duw; } else { DeleteUserWindowController* duw = [[DeleteUserWindowController alloc] initWithUser:user mainWindow:mainWindowController]; [self registerDeleteUserWindow:[user QQ] window:duw]; [duw showWindow:self]; return duw; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -