public UpdateRomDataServerWindow()
        {
            InitializeComponent();

            Data = new GameData();
            mLogger = LogManager.GetLogger(this.GetType().Name);
        }
        public void Initialize(GameData data)
        {
            Data = data;

            txtGameName.Text = data.GameName;
            txtGamePublisher.Text = data.GamePublisher;
            txtGameSystem.Text = data.GameSystem;
            pnlImage.BackgroundImage = data.GameImage;

            txtGameSystem.Enabled = false;
        }
 private async void lblClickHere_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     using (UpdateRomDataServerWindow form = new UpdateRomDataServerWindow())
     {
         form.Initialize(mSelectedRomData);
         DialogResult res = form.ShowDialog(this);
         
         if(res == DialogResult.OK)
         {
             mSelectedRomData = form.Data;
             SetGameInfoLabels(mSelectedRomData.GameName, mSelectedRomData.GamePublisher, mSelectedRomData.GameSystem, mSelectedRomData.GameImage, true,mSelectedRomData.TimePlayed);
             await mRomDataComponent.UpdateOrAddGameData(mSelectedRomId, mSelectedRomData);
         }
     }
 }
        private async void treeEmulatorView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode selectedNode = e.Node;
            mLogger.Info(String.Format("Selected Node: {0} at level {1}",selectedNode.FullPath, selectedNode.Level));

            SetGameInfoLabels();
            if(selectedNode.Level == 1)
            {
                // user selected a node corresponding to an emulator
                String emulatorName = selectedNode.Text;
                Emulator emu = mLoadedEmulators.First(f => f.Name == emulatorName);
                mLogger.Debug(String.Format("Selected node is an Emulator node for emulator <{0}>",emu.ToString()));
                CurrentCommand = new Command(emu.Path);
            }
            else if(selectedNode.Level == 2)
            {
                // User selected a node corresponding to a path
                String emulatorName = selectedNode.Parent.Text;
                Emulator emu = mLoadedEmulators.First(f => f.Name == emulatorName);
                String path = selectedNode.Text;
                mLogger.Debug(String.Format("Selected node is a Path node corresponding to emulator <{0}>",emu.ToString()));

                // Create the command line for this rom
                String argReplacements = ArgumentUtilities.SplitPath(path);
                mLogger.DebugFormat("Converted path {0} to replacement string {1}",path,argReplacements);
                CurrentCommand = new Command(emu.Path, emu.Arguments, argReplacements);
                mLogger.Info(String.Format("Completed command line: {0}", CurrentCommand.ToString()));

                // Query the server (if rom could be read) for the rom details
                string romId = null;
                string romSystem = null;
                SetGameInfoLabels("Fetching Game Info");
                if(mRomDataComponent.TryLoadRomData(path,out romId, out romSystem))
                {
                    mSelectedRomId = romId;
                    mSelectedRomData = await mRomDataComponent.RetrieveGameData(romId, romSystem);
                    SetGameInfoLabels(mSelectedRomData.GameName, mSelectedRomData.GamePublisher, mSelectedRomData.GameSystem, mSelectedRomData.GameImage,true,mSelectedRomData.TimePlayed);
                }
                else
                {
                    SetGameInfoLabels("Rom Could Not Be Parsed");
                }
            }
            else
            {
                mLogger.Debug("Selected node is not a Path or Emulator node, clearing command line");
                CurrentCommand = new Command();
            }
        }
 public async Task UpdateOrAddGameData(string romId, GameData data)
 {
     mLogger.Debug(String.Format("UpdateOrAddGameData called with rom id {0} and data {1}", romId, data));
     await mAccessor.UpdateOrAddGameData(romId, data);
 }
 public void UpdateGamePlayTime(string romId, GameData data)
 {
     mLogger.DebugFormat("Attempting to update rom {0} game play time to {1}",romId,data.TimePlayed.TotalSeconds);
     mAccessor.UpdateGamePlayedTime(romId, data);
 }