BOOL CQueuePropertiesDlg::OnInitDialog()
{
	CSkinDialog::OnInitDialog();

	SkinMe( _T("CQueuePropertiesDlg"), ID_VIEW_UPLOADS );

	m_wndTransfersMin.SetRange( 1, 128 );
	m_wndTransfersMax.SetRange( 1, 512 );
	m_wndRotateTimeSpin.SetRange( 30, 15 * 60 );

	CoolInterface.LoadIconsTo( m_gdiProtocols, protocolIDs );
	m_wndProtocols.SetImageList( &m_gdiProtocols, LVSIL_SMALL );

	m_wndProtocols.SetExtendedStyle( LVS_EX_CHECKBOXES );
	m_wndProtocols.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 0, _T("HTTP"), 0, 0, PROTOCOL_HTTP, PROTOCOL_HTTP );
	m_wndProtocols.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 1, _T("ED2K"), 0, 0, PROTOCOL_ED2K, PROTOCOL_ED2K );
	m_wndProtocols.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 2, _T("DC++"), 0, 0, PROTOCOL_DC, PROTOCOL_DC );
	m_wndProtocols.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 3, _T("BitTorrent"), 0, 0, PROTOCOL_BT, PROTOCOL_BT );

	CSingleLock pLock( &UploadQueues.m_pSection, TRUE );

	if ( ! UploadQueues.Check( m_pQueue ) )
	{
		PostMessage( WM_CLOSE );
		return TRUE;
	}

	m_sName = m_pQueue->m_sName;

	m_nFileStatusFlag = m_pQueue->m_nFileStateFlag;

	if ( m_nFileStatusFlag == CUploadQueue::ulqPartial )
	{
		m_wndPartialOnly.SetCheck(BST_CHECKED);
		m_wndLibraryOnly.SetCheck(BST_UNCHECKED);
		m_wndBoth.SetCheck(BST_UNCHECKED);
	}
	else if ( m_nFileStatusFlag == CUploadQueue::ulqLibrary )
	{
		m_wndPartialOnly.SetCheck(BST_UNCHECKED);
		m_wndLibraryOnly.SetCheck(BST_CHECKED);
		m_wndBoth.SetCheck(BST_UNCHECKED);
	}
	else
	{
		m_wndPartialOnly.SetCheck(BST_UNCHECKED);
		m_wndLibraryOnly.SetCheck(BST_UNCHECKED);
		m_wndBoth.SetCheck(BST_CHECKED);
	}

	m_bMinSize = m_pQueue->m_nMinSize > 0;
	m_sMinSize = Settings.SmartVolume( m_bMinSize ? m_pQueue->m_nMinSize : 0 );

	m_bMaxSize = m_pQueue->m_nMaxSize < SIZE_UNKNOWN;
	m_sMaxSize = Settings.SmartVolume( m_bMaxSize ? m_pQueue->m_nMaxSize : 0 );

	m_bMarked = ( ! m_pQueue->m_sShareTag.IsEmpty() );
	m_sMarked = m_pQueue->m_sShareTag;

	m_bMatch = ( ! m_pQueue->m_sNameMatch.IsEmpty() );
	m_sMatch = m_pQueue->m_sNameMatch;

	m_bProtocols = ( m_pQueue->m_nProtocols != 0 );

	if ( ! m_bProtocols || ( m_pQueue->m_nProtocols & (1<<PROTOCOL_HTTP) ) )
		m_wndProtocols.SetItemState( 0, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK );
	if ( ! m_bProtocols || ( m_pQueue->m_nProtocols & (1<<PROTOCOL_ED2K) ) )
		m_wndProtocols.SetItemState( 1, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK );
	if ( ! m_bProtocols || ( m_pQueue->m_nProtocols & (1<<PROTOCOL_DC) ) )
		m_wndProtocols.SetItemState( 2, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK );
	if ( ! m_bProtocols || ( m_pQueue->m_nProtocols & (1<<PROTOCOL_BT) ) )
		m_wndProtocols.SetItemState( 3, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK );

	m_bEnable		= m_pQueue->m_bEnable || m_bEnableOverride;

	m_nCapacity		= max( m_pQueue->m_nCapacity, m_pQueue->m_nMaxTransfers );
	m_nTransfersMin	= m_pQueue->m_nMinTransfers;
	m_nTransfersMax	= m_pQueue->m_nMaxTransfers;

	m_bRotate		= m_pQueue->m_bRotate;
	m_nRotateTime	= m_pQueue->m_nRotateTime;

	m_bReward		= m_pQueue->m_bRewardUploaders;

	//DWORD nTotal = Settings.Connection.OutSpeed * 1024 / 8;
	//DWORD nLimit = Settings.Bandwidth.Uploads;
	//if ( nLimit == 0 || nLimit > nTotal ) nLimit = nTotal;

	int nOtherPoints = (int)UploadQueues.GetTotalBandwidthPoints( !( m_pQueue->m_nProtocols & (1<<PROTOCOL_ED2K) ) )
						- (int)m_pQueue->m_nBandwidthPoints;
	if ( nOtherPoints < 0 ) nOtherPoints = 0;

	m_wndBandwidthSlider.SetRange( 1, max( 100, nOtherPoints * 3 ) );
	m_wndBandwidthSlider.SetPos( m_pQueue->m_nBandwidthPoints );

	UpdateData( FALSE );

	m_wndPartialOnly.EnableWindow(TRUE);
	m_wndLibraryOnly.EnableWindow(TRUE);
	m_wndBoth.EnableWindow(TRUE);

	m_wndMinSize.EnableWindow( m_bMinSize );
	m_wndMaxSize.EnableWindow( m_bMaxSize );
	m_wndMarked.EnableWindow( m_bMarked );
	m_wndMatch.EnableWindow( m_bMatch );
	m_wndProtocols.EnableWindow( m_bProtocols );
	m_wndRotateTime.EnableWindow( m_bRotate );
	m_wndRotateTimeSpin.EnableWindow( m_bRotate );
	m_wndCapacity.SetRange32( static_cast< int >( m_nTransfersMax ), 4096 );
	OnHScroll( 0, 0, NULL );

	if ( Settings.General.GUIMode == GUI_BASIC &&
		 !( Settings.eDonkey.EnableAlways | Settings.eDonkey.Enabled ) )
	{
		m_bProtocols = FALSE;
		m_wndProtocols.EnableWindow( FALSE );
		m_wndProtocols.ShowWindow( FALSE );

		(GetProtocolCheckbox())->EnableWindow( FALSE );
		(GetProtocolCheckbox())->ShowWindow( FALSE );
	}

	return TRUE;
}
BOOL CQueuePropertiesDlg::OnInitDialog()
{
	CSkinDialog::OnInitDialog();

	SkinMe( _T("CQueuePropertiesDlg"), ID_VIEW_UPLOADS );

	m_wndTransfersMin.SetRange( 1, 128 );
	m_wndTransfersMax.SetRange( 1, 512 );
	m_wndRotateTimeSpin.SetRange( 30, 15 * 60 );

	CBitmap bmProtocols;
	bmProtocols.LoadBitmap( IDB_PROTOCOLS );
	if ( theApp.m_bRTL ) 
		bmProtocols.m_hObject = CreateMirroredBitmap( (HBITMAP)bmProtocols.m_hObject );

	m_gdiProtocols.Create( 16, 16, ILC_COLOR32|ILC_MASK, 7, 1 );
	m_gdiProtocols.Add( &bmProtocols, RGB( 0, 255, 0 ) );

	m_wndProtocols.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_CHECKBOXES, LVS_EX_CHECKBOXES );
	m_wndProtocols.SetImageList( &m_gdiProtocols, LVSIL_SMALL );
	m_wndProtocols.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 0, _T("HTTP"), 0, 0, PROTOCOL_HTTP, PROTOCOL_HTTP );
	m_wndProtocols.InsertItem( LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM, 1, _T("ED2K"), 0, 0, PROTOCOL_ED2K, PROTOCOL_ED2K );

	CSingleLock pLock( &UploadQueues.m_pSection, TRUE );

	if ( ! UploadQueues.Check( m_pQueue ) )
	{
		PostMessage( WM_CLOSE );
		return TRUE;
	}

	m_sName = m_pQueue->m_sName;

	m_bPartial = m_pQueue->m_bPartial;

	if ( m_bMinSize = ( m_pQueue->m_nMinSize > 0 ) )
	{
		m_sMinSize = Settings.SmartVolume( m_pQueue->m_nMinSize, FALSE );
	}
	else
	{
		m_sMinSize = Settings.SmartVolume( 0, FALSE );
	}

	if ( m_bMaxSize = ( m_pQueue->m_nMaxSize < SIZE_UNKNOWN ) )
	{
		m_sMaxSize = Settings.SmartVolume( m_pQueue->m_nMaxSize, FALSE );
	}
	else
	{
		m_sMaxSize = Settings.SmartVolume( 0, FALSE );
	}

	m_bMarked = ( m_pQueue->m_sShareTag.GetLength() > 0 );
	m_sMarked = m_pQueue->m_sShareTag;

	m_bMatch = ( m_pQueue->m_sNameMatch.GetLength() > 0 );
	m_sMatch = m_pQueue->m_sNameMatch;

	m_bProtocols = ( m_pQueue->m_nProtocols != 0 );

	if ( ! m_bProtocols || ( m_pQueue->m_nProtocols & (1<<PROTOCOL_HTTP) ) )
		m_wndProtocols.SetItemState( 0, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK );
	if ( ! m_bProtocols || ( m_pQueue->m_nProtocols & (1<<PROTOCOL_ED2K) ) )
		m_wndProtocols.SetItemState( 1, INDEXTOSTATEIMAGEMASK(2), LVIS_STATEIMAGEMASK );

	m_bEnable		= m_pQueue->m_bEnable || m_bEnableOverride;

	m_nCapacity		= max( m_pQueue->m_nCapacity, m_pQueue->m_nMaxTransfers );
	m_nTransfersMin	= m_pQueue->m_nMinTransfers;
	m_nTransfersMax	= m_pQueue->m_nMaxTransfers;

	m_bRotate		= m_pQueue->m_bRotate;
	m_nRotateTime	= m_pQueue->m_nRotateTime;

	m_bReward		= m_pQueue->m_bRewardUploaders;

	DWORD nTotal = Settings.Connection.OutSpeed * 1024 / 8;
	DWORD nLimit = Settings.Bandwidth.Uploads;

	if ( nLimit == 0 || nLimit > nTotal ) nLimit = nTotal;
	int nOtherPoints = UploadQueues.GetTotalBandwidthPoints( !( m_pQueue->m_nProtocols & (1<<PROTOCOL_ED2K) ) ) - m_pQueue->m_nBandwidthPoints;

	if ( nOtherPoints < 0 ) nOtherPoints = 0;

	m_wndBandwidthSlider.SetRange( 1, max( 100, nOtherPoints * 3 ) );
	m_wndBandwidthSlider.SetPos( m_pQueue->m_nBandwidthPoints );

	UpdateData( FALSE );

	m_wndMinSize.EnableWindow( m_bMinSize );
	m_wndMaxSize.EnableWindow( m_bMaxSize );
	m_wndMarked.EnableWindow( m_bMarked );
	m_wndMatch.EnableWindow( m_bMatch );
	m_wndProtocols.EnableWindow( m_bProtocols );
	m_wndRotateTime.EnableWindow( m_bRotate );
	m_wndRotateTimeSpin.EnableWindow( m_bRotate );
	m_wndCapacity.SetRange32( m_nTransfersMax, 4096 );
	OnHScroll( 0, 0, NULL );


	if ( Settings.General.GUIMode == GUI_BASIC )
	{
		if ( !( Settings.eDonkey.EnableAlways | Settings.eDonkey.EnableToday ) )
		{
			m_bProtocols = FALSE;
			m_wndProtocols.EnableWindow( FALSE );
			m_wndProtocols.ShowWindow( FALSE );

			(GetProtocolCheckbox())->EnableWindow( FALSE );
			(GetProtocolCheckbox())->ShowWindow( FALSE );
		}
	}

	return TRUE;
}