<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2008 Christopher Olsen <cwolsen@domainatlantic.com>
$Id$
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp();" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="500" height="500" backgroundColor="#FFFFFF" xmlns:local="*">
<mx:Style>
Panel {
borderAlpha: 1;
borderThicknessLeft: 10;
borderThicknessTop: 0;
borderThicknessBottom: 0;
borderThicknessRight: 10;
roundedBottomCorners: true;
cornerRadius: 8;
headerHeight: 23;
highlightAlphas: 0, 0.12;
headerColors: #efaa15, #e6780c;
titleStyleName: "myPanelTitle";
}
.myPanelTitle {
color: #ffffff;
fontSize: 12;
fontWeight:bold;
}
.myInPanel {
footerColors: #4e84df, #0f6cc3;
}
ControlBar {
paddingTop:2px;
paddingBottom:2px;
height:15px;
}
ComboBox {
fillColors: #efaa15, #e6780c;
fillAlphas: 1.0, 1.0;
}
Tab {
fillAlphas: 1.0, 1.0;
fillColors: #efaa15, #e6780c;
roundedCorners: true;
cornerRadius: 7;
borderThickness: 0;
}
.curTab {
fillAlphas: 1.0, 1.0;
fillColors: #efaa15, #e6780c;
roundedCorners: true;
cornerRadius: 7;
borderThickness: 0;
}
TabNavigator {
backgroundColor: #E2E2E2;
tabOffset: 8;
paddingTop: 0;
borderThickness: 0;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
[Bindable]
public var tvMaster:Master = new Master();
[Bindable]
private var uM:ContextMenu;
private var chatHist:Array;
private var chatHistPos:Number = 0;
/* Entry Point To TUve */
private function initApp():void {
tvMaster.init(this);
this.addEventListener(TextEvent.LINK,doOpenInfo);
/* Get Global Variables */
tvMaster.chanSpec = Application.application.parameters.channel;
tvMaster.guestUser = Application.application.parameters.guestuser;
/* Fetch Register Channel Lust */
tvMaster.tuveGetChans();
/* Assemble Our Custom Context Menu */
uM = new ContextMenu();
uM.hideBuiltInItems();
var cmi:ContextMenuItem = new ContextMenuItem("Whois",false);
cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doWhois);
uM.customItems.push(cmi);
cmi = new ContextMenuItem("Kick",false);
cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,doKick);
uM.customItems.push(cmi);
chatHist = new Array();
if (tvMaster.tvSO.data.volume != null)
volume.value = Number(tvMaster.tvSO.data.volume);
this.setChildIndex(selChan,this.numChildren-1);
mainPanel.height -= 4;
}
private function doOpenInfo(event:TextEvent):void {
tvMaster.tuveShowIW(Number(event.text));
}
public function doWhois(event:ContextMenuEvent):void {
tvMaster.tvNetwork.sendData("WHOIS " + userDispList.selectedItem.@data + "\n");
}
public function doKick(event:ContextMenuEvent):void {
tvMaster.tvNetwork.sendData("KICK " + tvMaster.currentChannel + ":" + userDispList.selectedItem.@data + ":Bye!\n");
}
private function sendText():void {
var tmpString:String;
if ((chatText.text.length > 0) && (tvMaster.tvNetwork.tvNetCon == true)) {
var myPattern:RegExp = /</g;
tmpString = chatText.text.replace(myPattern,"<");
if (chatText.text.length > 0) {
chatHist.push(chatText.text);
if (chatHist.length > 20)
chatHist.shift();
chatHistPos = chatHist.length - 1;
}
if (chatText.text.indexOf("/") == 0) {
tvMaster.parseCommand(tmpString);
chatText.text = "";
}
else {
tvMaster.tvNetwork.sendData("MSG " + tvMaster.currentChannel + ":" + tmpString + "\n");
var date:Date = new Date;
chatWindow.htmlText += ("[" + tvMaster.fmtdDate() + "] " + tvMaster.userName + ": " + tmpString + "\n");
chatText.text = "";
}
}
} /* End sendText() */
private function userClick():void {
tvMaster.tvNetwork.sendData('WHOIS ' + userDispList.selectedItem.@data + '\n');
tvMaster.findIM(userDispList.selectedItem.@data);
}
private function doHist(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.DOWN) {
if (chatHistPos != (chatHist.length - 1)) {
chatText.text = chatHist[chatHistPos++];
chatText.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN,true,false,0.0,103));
}
else
chatText.text = "";
}
else if (event.keyCode == Keyboard.UP) {
if (chatHistPos >= 0) {
chatText.text = chatHist[chatHistPos--];
chatText.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN,true,false,0.0,103));
}
if (chatHistPos < 0)
chatHistPos = 0;
}
}
private function changeChan():void {
tvMaster.tvNetwork.sendData("PART " + tvMaster.currentChannel + "\n");
tvMaster.currentChannel = tvMaster.chanList[selChan.selectedIndex].channel;
tvMaster.tvNetwork.sendData("JOIN " + tvMaster.currentChannel + "\n");
tvMaster.userList = null;
tvMaster.userList = new XMLList();
}
public function updateVolume():void {
var st:SoundTransform = tvMaster.tvSyncNS.soundTransform;
st.volume = (volume.value) * .01;
tvMaster.tvSyncNS.soundTransform = st;
tvMaster.tvSO.data.volume = volume.value;
} /* End updateVolume */
private function doNav():void {
if (mainNav.selectedIndex == 1)
nP.getInfo(tvMaster.vid);
}
]]>
</mx:Script>
<mx:ComboBox width="120" dataProvider="{tvMaster.chanList}" id="selChan" labelField="channel" change="changeChan()" click="mainNav.selectedIndex = 0;" focusAlpha="0" y="25" x="360"/>
<mx:Panel width="100%" height="100%" id="mainPanel" title="ubChattin v0.62" borderThicknessTop="5" backgroundAlpha="1.0" backgroundColor="#E2E2E2">
<mx:TabNavigator id="mainNav" width="100%" height="100%" paddingTop="-1" creationPolicy="all" change="doNav()" paddingBottom="5">
<mx:Panel id="chtPnl" borderThicknessLeft="0" borderThicknessRight="0" title="Channel Topic" styleName="myInPanel" label="Chat" width="100%" height="100%" paddingTop="0">
<mx:HBox width="100%" height="100%" horizontalGap="2">
<mx:TextArea height="100%" width="100%" mouseUp="tvMaster.setClip(chatWindow)" click="focusManager.setFocus(chatText)" updateComplete="chatWindow.verticalScrollPosition = chatWindow.maxVerticalScrollPosition" editable="false" id="chatWindow" horizontalScrollPolicy="off" />
<mx:List height="100%" width="75" id="userDispList" itemRollOver="userDispList.selectedIndex = event.rowIndex;" contextMenu="{uM}" dataProvider="{tvMaster.userList}" labelField="@label" doubleClickEnabled="true" doubleClick="userClick()" />
</mx:HBox>
<mx:ControlBar>
<mx:TextInput width="100%" keyDown="doHist(event)" enter="sendText()" id="chatText" focusAlpha="0" height="22" />
<mx:Label id="myNick" text="{tvMaster.userName}" width="75" fontFamily="Georgia" fontSize="10" fontWeight="bold" color="#FFFFFF"/>
</mx:ControlBar>
</mx:Panel>
<local:infoWindow label="Now Playing" id="nP" width="100%" creationPolicy="all" creationComplete="nP.tvMaster = this.tvMaster" sW="true" />
</mx:TabNavigator>
<mx:ControlBar verticalAlign="bottom">
<mx:VBox width="70%">
<mx:Label text="Song Title" id="songTitle" width="100%" />
<mx:HBox>
<mx:Label text="Vol:"/>
<mx:HSlider liveDragging="true" minimum="0" id="volume" snapInterval="1" value="75" maximum="100" change="updateVolume()"/>
</mx:HBox>
</mx:VBox>
<mx:LinkButton label="Powered by TUve" />
</mx:ControlBar>
</mx:Panel>
</mx:Application>