⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainshell.java

📁 类似于MSN
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					opDialog.setFailString(LumaQQ.getResourceString("message.box.op.upload.fail"));
					opDialog.open();
					// 组装上传分组名称包,注意i从1开始,因为我的好友组是缺省的,不需要上传
					//     同时组装上传分组好友列表包
					GroupNameOpPacket gnoPacket = new GroupNameOpPacket();
					UploadGroupFriendPacket ugfPacket = new UploadGroupFriendPacket();
					int tabSize = model.getTabCount();
					for(int i = 0, g = 0; i < tabSize; i++) {
						GroupModel gModel = (GroupModel)model.getTab(i);
						if(gModel.needUpload()) {
							// 等于0表示是“我的好友”,这个是不需要上传名字的
							if(i != 0)
								gnoPacket.addGroup(model.getTabName(i));
							
							// 添加组中好友
							int itemSize = model.getItemCount(i);
							for(int j = 0; j < itemSize; j++) {
								FriendModel fModel = (FriendModel)model.getItem(i, j);
								int qqNum = fModel.getQQ();
								ugfPacket.addFriend(g, qqNum);
							}
							g++;
						}
					}
					// 发送
					client.sendPacket(gnoPacket);
					client.sendPacket(ugfPacket);
				}
			}
		);
		// 下载分组
		sub = new MenuItem(groupMenu, SWT.PUSH);
		sub.setText(LumaQQ.getResourceString("menu.sys.group.download"));
		sub.setImage(icons.getResource(IconHolder.icoDownloadGroup));
		sub.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					// 检查是否已经登陆,没有则返回
					if(!client.getUser().isLoggedIn()) return;
					// 检查当前是否有其他长时间操作正在进行,是则返回
					if(working) return;
					else working = true;
					// 打开提示框
					opDialog = new OperationShell(getThis());
					opDialog.setTitle(LumaQQ.getResourceString("op.download.title"));
					opDialog.setHint(LumaQQ.getResourceString("op.download.hint"));
					opDialog.setSuccessString(LumaQQ.getResourceString("message.box.op.download.success"));
					opDialog.setFailString(LumaQQ.getResourceString("message.box.op.download.fail"));
					opDialog.open();
					// 组装下载分组名称包和下载分组好友列表包
					GroupNameOpPacket gnoPacket = new GroupNameOpPacket();
					gnoPacket.setType(QQ.QQ_DOWNLOAD_GROUP_NAME);
					DownloadGroupFriendPacket dgfPacket = new DownloadGroupFriendPacket();
					// 发送
					client.sendPacket(gnoPacket);
					client.sendPacket(dgfPacket);
				}
			}
		);
		// separator
		MenuItem separator = new MenuItem(sysMenu, SWT.SEPARATOR);
		// 好友信息管理菜单
		mi = new MenuItem(sysMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getResourceString("menu.sys.friend"));
		mi.setImage(icons.getResource(IconHolder.icoFriendView));
		Menu infoMenu = new Menu(mi);
		mi.setMenu(infoMenu);
		// separator
		separator = new MenuItem(sysMenu, SWT.SEPARATOR);
		// 刷新好友列表
		mi = new MenuItem(infoMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.friend.refresh"));
		mi.setImage(icons.getResource(IconHolder.icoFriend));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e)  {				    
					client.getFriendList();
				}
			}
		);
		// 批量下载好友备注
		mi = new MenuItem(infoMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.friend.download.remark"));
		mi.setImage(icons.getResource(IconHolder.icoDownloadRemark));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
				// 检查是否已经登陆,没有则返回
				if(!client.getUser().isLoggedIn()) return;
				// 检查当前是否有其他长时间操作正在进行,是则返回
				if(working) return;
				else working = true;
				// 打开下载进度窗口
				DownloadFriendRemarkShell downloadShell = new DownloadFriendRemarkShell(getThis());
				downloadShell.open();
            }
		});
		// 申请QQ号码
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.apply"));
		mi.setImage(icons.getResource(IconHolder.icoApply));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                openBrowserShell("http://im.qq.com/qq/reg_freeqq.shtml", "Apply Free QQ Number", LumaQQ.getResourceString("message.box.manual.apply"));
            }
		});
		// separator
		separator = new MenuItem(sysMenu, SWT.SEPARATOR);
		// IP查询
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.searchip"));
		mi.setImage(icons.getResource(IconHolder.icoSearchIp));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                IPSeekerShell ips = new IPSeekerShell(getThis());
                ips.open();
            }
		});
		// 个人设定
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.personinfo"));
		mi.setImage(icons.getResource(IconHolder.icoPersonInfo));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e)  {
					openUserInfoShell(myModel, true);
				}
			}
		);
		// 系统参数
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.sysopt"));
		mi.setImage(icons.getResource(IconHolder.icoSysOpt));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e)  {
					openSystemOptionShell();
				}
			}
		);
		// separator
		separator = new MenuItem(sysMenu, SWT.SEPARATOR);
		// 更改用户
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.changeuser"));
		mi.setImage(icons.getResource(IconHolder.icoChangeUser));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e)  {
					changeUser();
				}
			}
		);
		// separator
		separator = new MenuItem(sysMenu, SWT.SEPARATOR);
		// 检查LumaQQ更新
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.checkupdate"));
		mi.setImage(icons.getResource(IconHolder.icoUpdate));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                if(!checkingUpdate) {
                    checkingUpdate = true;
	                CheckUpdateShell cus = new CheckUpdateShell(getThis());
	                cus.open();                    
                }
            }
		});
		// 登录LumaQQ主页
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.homepage"));
		mi.setImage(icons.getResource(IconHolder.icoHomepage));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                openBrowserShell("http://lumaqq.linuxsir.org", "LumaQQ HomePage", LumaQQ.getResourceString("message.box.manual.homepage"));
            }
		});
		// 关于
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.about"));
		mi.setImage(icons.getResource(IconHolder.icoAbout));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					AboutDialog ad = new AboutDialog(shell);
					ad.open();
				}
			}
		);
		// separator
		separator = new MenuItem(sysMenu, SWT.SEPARATOR);
		// 退出
		mi = new MenuItem(sysMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.sys.exit"));
		mi.setImage(icons.getResource(IconHolder.icoExit));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					close();					
				}
			}
		);
	}

	// 改变当前用户
	protected void changeUser() {
		LoginDialog login = new LoginDialog(shell);
		if(login.open()) {
			int qqNum = login.getQQ();
			if(myModel.getQQ() != qqNum) {
				client.logout();
				setIconByStatus();
				// 创建QQ用户对象
				QQUser me = new QQUser(qqNum, login.getMd5Password());
				if(login.isLoginHidden()) {
					me.setLoginMode(QQ.QQ_LOGIN_MODE_HIDDEN);
					me.setStatus(QQ.QQ_FRIEND_STATUS_HIDDEN);
				} else {
					me.setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
					me.setStatus(QQ.QQ_FRIEND_STATUS_ONLINE);
				}
				// 创建QQ客户端对象
				client.setUser(me);
				// 初始化用户文件路径
				LumaQQ.initUserFilePath(me);
				// 设置client
				setClient(this.client);
				// shutter控件重新layout
				shutter.layout();
				// 登陆
				checkLogin();
			}							
		}	
	}

	// 打开系统设置对话框
	protected SystemOptionShell openSystemOptionShell() {
		if(systemOptionShell == null) {
			systemOptionShell = new SystemOptionShell(this);
			systemOptionShell.open();			
		} else {
			systemOptionShell.setMinimized(false);
			systemOptionShell.setActive();
		}
		return systemOptionShell;
	}

	/**
	 * 保存用户的好友列表和分组信息到缺省xml文件中
	 */
	private void saveModel() {
		Groups groups = new GroupsImpl();
		int tabSize = model.getTabCount();
		for(int i = 0; i < tabSize; i++) {
			Group group = ModelUtils.createGroupElement(model.getTab(i));
			groups.addGroup(group);
			// 判断这个组是群组还是普通组,保存的方式有些不一样,因为model不一样
			if("true".equals(group.getIsCluster())) {
				int itemSize = model.getItemCount(i);
				for(int j = 0; j < itemSize; j++) {
					// 得到群的model
					Object modelObj = model.getItem(i, j);
					// 判断model的类型
					if(modelObj instanceof ClusterModel) {
						ClusterModel c = (ClusterModel)modelObj;
						// 只需要保存固定群
						if(c.isPermanent()) {
							// 把群model添加到group中
							Cluster cluster = ModelUtils.createClusterElement(c);
							group.addCluster(cluster);
							// 添加这个群的成员
							Hashtable members = (Hashtable)c.getProperty("members");
							Iterator iter = members.values().iterator();
							while(iter.hasNext()) {
								FriendModel f = (FriendModel)iter.next();
								Friend friend = ModelUtils.createFriendElement(f);
								cluster.addFriend(friend);
							}
						}
					} 
				}	
			} else {
				int itemSize = model.getItemCount(i);
				for(int j = 0; j < itemSize; j++) {
					Friend friend = ModelUtils.createFriendElement((FriendModel)model.getItem(i, j));
					group.addFriend(friend);
				}				
			}
		}
		// 写入到文件
		try {
			groups.marshal(new File(LumaQQ.GROUPS));
		} catch (IOException e) {
			log.error("好友分组信息保存失败");
		}
	}

	/**
	 * 创建,初始化状态菜单
	 */
	private void initStatusMenu() {	
		// 更改状态弹出菜单
		statusMenu = new Menu(shell, SWT.POP_UP);
		// 上线
		MenuItem mi = new MenuItem(statusMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.status.online"));
		mi.setImage(icons.getResource(IconHolder.icoOnline));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if(checkLogin())
						client.makeMeOnline();						
					else
					    client.getUser().setStatus(QQ.QQ_FRIEND_STATUS_ONLINE);
				}
			}
		);
		// separator
		MenuItem separator = new MenuItem(statusMenu, SWT.SEPARATOR);
		// 离开,离开菜单有子菜单
		mi = new MenuItem(statusMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getResourceString("menu.status.away"));
		mi.setImage(icons.getResource(IconHolder.icoAway));
		awayMenu = new Menu(mi);
		mi.setMenu(awayMenu);
		// 自定义
		MenuItem sub = new MenuItem(awayMenu, SWT.PUSH);
		sub.setText(LumaQQ.getResourceString("menu.status.away.custom"));
		sub.setImage(icons.getResource(IconHolder.icoReply));
		sub.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					openSystemOptionShell().showPanel(SystemOptionShell.REPLY);
				}
			}
		);
		separator = new MenuItem(awayMenu, SWT.SEPARATOR);
		// 无回复
		sub = new MenuItem(awayMenu, SWT.RADIO);
		sub.setText(LumaQQ.getResourceString("menu.status.away.null"));
		sub.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if(checkLogin()) {
						replies.setAutoReply(false);
						if(client.getUser().getStatus() != QQ.QQ_FRIEND_STATUS_AWAY)
							client.makeMeAway();					
					} else
					    client.getUser().setStatus(QQ.QQ_FRIEND_STATUS_AWAY);
				}
			}
		);
		// separator
		se

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -