private void RemoveSymbolItem_Menu_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem menuItem = sender as ToolStripMenuItem;

            if (listView_lists.SelectedObject != null)
            {
                ArbitrageWatchList watchlistItem = listView_lists.SelectedObject as ArbitrageWatchList;
                string[]           pairs         = menuItem.Tag.ToString().Split('_');
                ExchangeTicker     listItem      = watchlistItem.Items.FirstOrDefault(item => item.symbol == pairs[0] && item.market == pairs[1]);
                if (listItem != null)
                {
                    DialogResult result = MessageBox.Show("Remove " + menuItem.Tag.ToString() + "?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (result == DialogResult.Yes)
                    {
                        //PreferenceManager.TradingViewPreferences.SymbolOverviewParameters.symbols.Remove(listItem);
                        watchlistItem.Items.Remove(listItem);
                        UpdatePreferenceFile(PreferenceType.Arbitrage);
                        listView_symbols.SetObjects(watchlistItem.Items);


                        updateOverviews();
                        //UpdateUI();
                    }
                }
            }
            //LogManager.AddLogMessage(Name, "RemoveItem_Menu_Click", "Removing " + sender.ToString() + " From List" + " | " + menuItem.Tag.ToString(), LogManager.LogMessageType.DEBUG);
        }
        private void ToggleCharts()
        {
            //LogManager.AddLogMessage(Name, "ToggleCharts", PreferenceManager.ArbitragePreferences.ShowCharts.ToString(), LogManager.LogMessageType.DEBUG);
            ArbitrageWatchList watchlist = ArbitragePreferences.GetCurrentWatchList();

            if (WatchList.ShowCharts)
            {
                // Remove Charts
                //WatchList.ShowCharts = false;
                watchlist.ShowCharts = false;
                //UpdatePreferenceFile(PreferenceType.Arbitrage);
                //toolStripButton_charts.Text = "Show Charts";
                //toolStripButton_charts.Image = Properties.Resources.ConnectionStatus_ERROR;
                //controlSize = new Size(150, 150);
                toolStripMenuItem_chart.Text  = "Show Charts";
                toolStripMenuItem_chart.Image = Properties.Resources.ConnectionStatus_ERROR;
            }
            else
            {
                // Add Charts
                //WatchList.ShowCharts = true;
                watchlist.ShowCharts = true;

                //toolStripButton_charts.Text = "Hide Charts";
                //toolStripButton_charts.Image = Properties.Resources.ConnectionStatus_ACTIVE;
                //controlSize = new Size(150, 300);
                toolStripMenuItem_chart.Text  = "Hide Charts";
                toolStripMenuItem_chart.Image = Properties.Resources.ConnectionStatus_ACTIVE;
            }
            UpdatePreferenceFile(PreferenceType.Arbitrage);
            //UpdateUI();
            SetWatchlist(true);
        }
 private void listView_lists_SelectionChanged(object sender, EventArgs e)
 {
     if (listView_lists.SelectedObject != null)
     {
         ArbitrageWatchList item = listView_lists.SelectedObject as ArbitrageWatchList;
         listView_symbols.SetObjects(item.Items);
     }
 }
        private void toolStripButton_addSymbol_Click(object sender, EventArgs e)
        {
            //LogManager.AddLogMessage(Name, "toolStripButton_add_Click", sender.ToString(), LogManager.LogMessageType.DEBUG);
            try
            {
                //TradingViewSymbolOverview listItem = PreferenceManager.TradingViewPreferences.SymbolOverviewParameters.symbols.FirstOrDefault(item => item.tabName == toolStripTextBox_tabName.Text);
                if (listView_lists.SelectedObject != null)
                {
                    ArbitrageWatchList symbolList = listView_lists.SelectedObject as ArbitrageWatchList;

                    ExchangeTicker listItem = symbolList.Items.FirstOrDefault(item => item.symbol == toolStripTextBox_symbol.Text.ToUpper() && item.market == toolStripTextBox_market.Text.ToUpper());

                    if (listItem != null)
                    {
                        MessageBox.Show("Already an Item with this name.", "Duplicate");
                    }
                    else
                    {
                        ExchangeTicker item = new ExchangeTicker()
                        {
                            symbol = toolStripTextBox_symbol.Text.ToUpper(),
                            market = toolStripTextBox_market.Text.ToUpper(),
                            //exchange = (TradingViewCryptoExchange)Enum.Parse(typeof(TradingViewCryptoExchange), toolStripDropDownButton_exchange.Text, true),
                            //interval = (TradingViewSymbolOverviewInterval)Enum.Parse(typeof(TradingViewSymbolOverviewInterval), toolStripDropDownButton_timespan.Text, true),
                            //tabName = toolStripTextBox_tabName.Text
                        };
                        //LogManager.AddLogMessage(Name, "toolStripButton_add_Click", item.symbol + " | " + item.market + " | " + item.exchange + " | " + item.interval + " | " + item.tabName);
                        //PreferenceManager.TradingViewPreferences.SymbolOverviewParameters.symbols.Add(item);
                        symbolList.Items.Add(item);

                        updateOverviews();
                        listView_symbols.SetObjects(symbolList.Items);
                        //UpdateUI();
                        UpdatePreferenceFile(PreferenceType.Arbitrage);
                        ParentForm.Focus();
                        //Focus();
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.AddLogMessage(Name, "toolStripButton_add_Click", ex.Message, LogManager.LogMessageType.EXCEPTION);
            }
        }
 private void toolStripButton_addList_Click(object sender, EventArgs e)
 {
     if (toolStripTextBox_listName.Text.Length > 0)
     {
         ArbitrageWatchList listItem = ArbitragePreferences.WatchLists.FirstOrDefault(item => item.Name == toolStripTextBox_listName.Text);
         if (listItem == null)
         {
             ArbitrageWatchList list = new ArbitrageWatchList()
             {
                 Name = toolStripTextBox_listName.Text
             };
             toolStripTextBox_listName.Text = String.Empty;
             ArbitragePreferences.WatchLists.Add(list);
             UpdatePreferenceFile(PreferenceType.Arbitrage);
             //tradingViewManagerControl.UpdateWatchlists(); --> CHANGE TO ARBITRAGE
             arbitrageManagerControl.UpdateWatchlists();
             //arbitrageManagerControl.UpdateWatchlists();
             UpdateUI();
         }
     }
 }
        private void RemoveListItem_Menu_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
            //LogManager.AddLogMessage(Name, "RemoveItem_Menu_Click", "Removing " + menuItem.Text + " From List", LogManager.LogMessageType.DEBUG);
            //TradingViewSymbolList listItem = PreferenceManager.TradingViewPreferences.SymbolOverviewParameters.symbols.FirstOrDefault(item => item.tabName == menuItem.Tag.ToString());
            ArbitrageWatchList listItem = ArbitragePreferences.WatchLists.FirstOrDefault(item => item.Name == menuItem.Tag.ToString());

            if (listItem != null)
            {
                //PreferenceManager.TradingViewPreferences.SymbolOverviewParameters.symbols.Remove(listItem);
                DialogResult result = MessageBox.Show("Remove " + listItem.Name + "?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (result == DialogResult.Yes)
                {
                    ArbitragePreferences.WatchLists.Remove(listItem);
                    UpdatePreferenceFile(PreferenceType.Arbitrage);
                    listView_symbols.Clear();
                    updateOverviews();
                    UpdateUI();
                }
            }
        }
 private void listView_lists_MouseClick(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Right)
     {
         if (listView_lists.FocusedItem.Bounds.Contains(e.Location) == true)
         {
             if (listView_lists.SelectedObject != null)
             {
                 //CalculatorItem item = listView.SelectedObject as CalculatorItem;
                 ArbitrageWatchList item     = listView_lists.SelectedObject as ArbitrageWatchList;
                 ContextMenuStrip   menu     = new ContextMenuStrip();
                 ToolStripMenuItem  menuItem = new ToolStripMenuItem()
                 {
                     Text = "Remove " + item.Name,
                     Tag  = item.Name
                 };
                 menuItem.Click += new EventHandler(RemoveListItem_Menu_Click);
                 menu.Items.Add(menuItem);
                 menu.Show(Cursor.Position);
             }
         }
     }
 }
        private void ToggleLists()
        {
            //LogManager.AddLogMessage(Name, "ToggleCharts", PreferenceManager.ArbitragePreferences.ShowCharts.ToString(), LogManager.LogMessageType.DEBUG);
            ArbitrageWatchList watchlist = ArbitragePreferences.GetCurrentWatchList();

            if (watchlist.ShowLists)
            {
                // Remove Lists
                watchlist.ShowLists = false;
                //UpdatePreferenceFile(PreferenceType.Arbitrage);
                toolStripMenuItem_list.Text  = "Show Lists";
                toolStripMenuItem_list.Image = Properties.Resources.ConnectionStatus_ERROR;
            }
            else
            {
                // Add Lists
                WatchList.ShowLists          = true;
                toolStripMenuItem_list.Text  = "Hide Lists";
                toolStripMenuItem_list.Image = Properties.Resources.ConnectionStatus_ACTIVE;
            }
            UpdatePreferenceFile(PreferenceType.Arbitrage);
            //UpdateUI();
            SetWatchlist(true);
        }
        public void SetWatchlist(bool resize = false, bool clear = false)
        {
            if (flowLayoutPanel.InvokeRequired)
            {
                SetWatchlistCallback d = new SetWatchlistCallback(SetWatchlist);
                flowLayoutPanel.Invoke(d, new object[] { resize, clear });
            }
            else
            {
                if (clear)
                {
                    flowLayoutPanel.Controls.Clear();
                }

                /*
                 * if (ArbitragePreferences.CurrentWatchList.Contains('|'))
                 * {
                 *  string[] data = ArbitragePreferences.CurrentWatchList.Split('|');
                 *  string name = data[0];
                 *  string preset = data[1];
                 *  toolStripLabel_totals.Text = GetPresetWatchlistTotals(name, preset);
                 * }
                 * else
                 * {
                 *  toolStripLabel_totals.Text = "NO";
                 * }
                 */
                WatchList = ArbitragePreferences.GetCurrentWatchList();
                SetOptionsMenu();

                foreach (ExchangeTicker ticker in WatchList.Items.OrderByDescending(item => item.last))
                {
                    //LogManager.AddLogMessage(Name, "SetWatchlist", "ticker=" + ticker.symbol + " | " + ticker.market + " | " + ticker.last, LogManager.LogMessageType.DEBUG);
                    Control[] ctrls = flowLayoutPanel.Controls.Find(ticker.symbol, false);

                    if (ctrls.Length > 0)
                    {
                        // UPDATE
                        ArbitrageItemControl control = ctrls[0] as ArbitrageItemControl;
                        //control.UpdateUI();
                        //control.SetData(ticker.symbol, PreferenceManager.ArbitragePreferences.market);
                        if (ticker.symbol != "BTC")
                        {
                            control.SetData(ticker.symbol, ArbitragePreferences.market);
                        }
                        else
                        {
                            control.SetData(ticker.symbol, "USD");
                        }
                    }
                    else
                    {
                        // ADD
                        ArbitrageItemControl control = new ArbitrageItemControl()
                        {
                            Name = ticker.symbol, manager = this
                        };
                        if (ticker.symbol != "BTC")
                        {
                            control.SetData(ticker.symbol, ArbitragePreferences.market);
                        }
                        else
                        {
                            control.SetData(ticker.symbol, "USD");
                        }
                        //PreferenceManager.SetControlTheme(control, PreferenceManager.preferences.Theme, ParentForm);
                        flowLayoutPanel.Controls.Add(control);
                        //LogManager.AddLogMessage(Name, "SetWatchlist", "ticker=" + ticker.symbol + " | " + ticker.market + " | " + ticker.last, LogManager.LogMessageType.DEBUG);
                    }
                }
                UpdateUI(resize);
            }
        }