Beispiel #1
0
void WaitingUsersFrame::LoadAll()
{
	CLockRedraw<> l_lock_draw(m_ctrlList);
	CLockRedraw<true> l_lock_draw_q(ctrlQueued);
	
	HTREEITEM userNode = ctrlQueued.GetRootItem();
	while (userNode)
	{
		delete reinterpret_cast<UserItem *>(ctrlQueued.GetItemData(userNode));
		userNode = ctrlQueued.GetNextSiblingItem(userNode);
	}
	// TODO - delete
	m_ctrlList.DeleteAllItems();
	ctrlQueued.DeleteAllItems();
	UQFUsers.clear();
	
	// Load queue
	{
		UploadManager::LockInstanceQueue lockedInstance;
		const auto& users = lockedInstance->getUploadQueueL();
		UQFUsers.reserve(users.size());
		for (auto uit = users.cbegin(); uit != users.cend(); ++uit)
		{
			UQFUsers.push_back(uit->getUser());
			ctrlQueued.InsertItem(TVIF_PARAM | TVIF_TEXT, (uit->getUser()->getLastNickT() + _T(" - ") + Text::toT(uit->m_hintedUser.hint)).c_str(),
			                      0, 0, 0, 0, (LPARAM)(new UserItem(uit->getUser())), TVI_ROOT, TVI_LAST);
			for (auto i = uit->m_waiting_files.cbegin(); i != uit->m_waiting_files.cend(); ++i)
			{
				AddFile(*i);
			}
		}
	}
	m_needsResort = true; // [!] IRainman opt.
	m_needsUpdateStatus = true; // [!] IRainman opt.
}
Beispiel #2
0
LRESULT RSSNewsFrame::updateList(const RSSManager::NewsList& list)
{
	CLockRedraw<true> l_lock_draw(ctrlList);
	for (auto i = list.cbegin(); i != list.cend(); ++i)
	{
		addRSSEntry(*i);
	}
	return 1;
}
LRESULT FavoriteHubsFrame::onTimer(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
	const time_t curTime = GET_TIME();
	CLockRedraw<> l_lock_draw(ctrlHubs);
	const int l_cnt = ctrlHubs.GetItemCount();
	for (int pos = 0; pos < l_cnt; ++pos)
	{
		const FavoriteHubEntry* entry = (const FavoriteHubEntry*)ctrlHubs.GetItemData(pos);
		dcassert(entry);
		if (entry)
		{
			const ConnectionStatus& connectionStatus = entry->getConnectionStatus();
			ctrlHubs.SetItemText(pos, COLUMN_CONNECTION_STATUS, getLastAttempts(connectionStatus, curTime).c_str());
			ctrlHubs.SetItemText(pos, COLUMN_LAST_SUCCESFULLY_CONNECTED, getLastSucces(connectionStatus, curTime).c_str());
		}
	}
	if (ctrlHubs.getSortColumn() == COLUMN_CONNECTION_STATUS || ctrlHubs.getSortColumn() == COLUMN_LAST_SUCCESFULLY_CONNECTED)
		ctrlHubs.resort();
	return 0;
}
Beispiel #4
0
LRESULT WaitingUsersFrame::onItemChanged(int /*idCtrl*/, LPNMHDR /* pnmh */, BOOL& /*bHandled*/)
{
	HTREEITEM userNode = ctrlQueued.GetSelectedItem();
	
	while (userNode)
	{
		CLockRedraw<> l_lock_draw(m_ctrlList);
		CLockRedraw<true> l_lock_draw_q(ctrlQueued);
		m_ctrlList.DeleteAllItems();
		UserItem* ui = reinterpret_cast<UserItem *>(ctrlQueued.GetItemData(userNode));
		if (ui)
		{
			UploadManager::LockInstanceQueue lockedInstance;
			const auto& users = lockedInstance->getUploadQueueL();
			auto it = std::find_if(users.begin(), users.end(), [&](const UserPtr & u)
			{
				return u == ui->m_user;
			});
			if (it != users.end())
			{
				for (auto i = it->m_waiting_files.cbegin(); i != it->m_waiting_files.cend(); ++i)
				{
					AddFile(*i);
				}
				m_needsResort = true; // [!] IRainman opt.
				m_needsUpdateStatus = true; // [!] IRainman opt.
				return 0;
			}
		}
		else
		{
			LoadAll();
		}
		userNode = ctrlQueued.GetNextSiblingItem(userNode);
	}
	return 0;
}
void PublicHubsFrame::loadISPHubs()
{
	CWaitCursor l_cursor_wait; //-V808
	CFlyLockWindowUpdate l_lock_update(m_ctrlTree);
	CLockRedraw<true> l_lock_draw(m_ctrlTree);
	m_ISPRootItem = 0;
	m_PublicListRootItem = 0;
	m_ctrlTree.DeleteAllItems();
	m_country_map.m_country.clear();
	g_ISPImage.init();
	m_ctrlTree.SetImageList(g_ISPImage.getIconList(), TVSIL_NORMAL);
	CFlyLog l_log("[ISP Hub Loader]");
	if (m_isp_raw_data.empty())
	{
		const string l_url_config_file = "http://etc.fly-server.ru/etc/isp-hub-list.txt";
		l_log.step("Download:" + l_url_config_file);
		if (Util::getDataFromInet(true, l_url_config_file, m_isp_raw_data, 0) == 0)
		{
			l_log.step("Error download! Config will be loaded from internal resources");
			LPCSTR l_res_data;
			if (const auto l_size_res = Util::GetTextResource(IDR_ISP_HUB_LIST_EXAMPLE, l_res_data))
			{
				m_isp_raw_data = string(l_res_data, l_size_res);
			}
			else
			{
				l_log.step("Error load resource Util::GetTextResource(IDR_FLY_SERVER_CONFIG");
			}
		}
	}
	l_log.step("Parse ISP Hub list");
	if (!m_isp_raw_data.empty())
	{
		loadPublicListHubs();
		m_ISPRootItem = m_ctrlTree.InsertItem(TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_PARAM,
		                                      _T("ISP"),
		                                      g_ISPImage.m_flagImageCount + 14, // nImage
		                                      g_ISPImage.m_flagImageCount + 14, // nSelectedImage
		                                      0, // nState
		                                      0, // nStateMask
		                                      e_ISPRoot, // lParam
		                                      0, // aParent,
		                                      0  // hInsertAfter
		                                     );
		string::size_type linestart = 0;
		string::size_type lineend = 0;
		for (;;)
		{
			lineend = m_isp_raw_data.find('\n', linestart);
			if (lineend == string::npos)
			{
				const string l_line = m_isp_raw_data.substr(linestart);
				if (!l_line.empty())
				{
					parseISPHubsLine(l_line, l_log);
				}
				break;
			}
			else
			{
				string l_line = m_isp_raw_data.substr(linestart, lineend - linestart - 1);
				parseISPHubsLine(l_line, l_log);
				linestart = lineend + 1;
			}
		}
		m_ctrlTree.Expand(m_ISPRootItem);
		m_ctrlTree.Expand(m_PublicListRootItem);
	}
}
Beispiel #6
0
LRESULT UsersFrame::onCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
	// CreateSimpleStatusBar(ATL_IDS_IDLEMESSAGE, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP);  //[-] SCALOlaz
	// ctrlStatus.Attach(m_hWndStatusBar);
	
	ctrlUsers.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
	                 WS_HSCROLL | WS_VSCROLL | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS, WS_EX_CLIENTEDGE, IDC_USERS);
	SET_EXTENDENT_LIST_VIEW_STYLE_WITH_CHECK(ctrlUsers);
	ResourceLoader::LoadImageList(IDR_FAV_USERS_STATES, images, 16, 16);
	ctrlUsers.SetImageList(images, LVSIL_SMALL);
	
	SET_LIST_COLOR(ctrlUsers);
	
	// Create listview columns
	WinUtil::splitTokens(columnIndexes, SETTING(USERSFRAME_ORDER), COLUMN_LAST);
	WinUtil::splitTokensWidth(columnSizes, SETTING(USERSFRAME_WIDTHS), COLUMN_LAST);
	
	BOOST_STATIC_ASSERT(_countof(columnSizes) == COLUMN_LAST);
	BOOST_STATIC_ASSERT(_countof(columnNames) == COLUMN_LAST);
	
	for (int j = 0; j < COLUMN_LAST; j++)
	{
		ctrlUsers.InsertColumn(j, TSTRING_I(columnNames[j]), LVCFMT_LEFT, columnSizes[j], j);
	}
	
	ctrlUsers.setColumnOrderArray(COLUMN_LAST, columnIndexes);
	ctrlUsers.setVisible(SETTING(USERSFRAME_VISIBLE)); // !SMT!-UI
	//ctrlUsers.setSortColumn(COLUMN_NICK);
	ctrlUsers.setSortColumn(SETTING(USERS_COLUMNS_SORT));
	ctrlUsers.setAscending(BOOLSETTING(USERS_COLUMNS_SORT_ASC));
	
	// [-] brain-ripper
	// Make menu dynamic (in context menu handler), since its content depends of which
	// user selected (for add/remove favorites item)
	/*
	usersMenu.CreatePopupMenu();
	usersMenu.AppendMenu(MF_STRING, IDC_EDIT, CTSTRING(PROPERTIES));
	usersMenu.AppendMenu(MF_STRING, IDC_SUPER_USER, CTSTRING(SUPER_USER));
	usersMenu.AppendMenu(MF_POPUP, (UINT_PTR)(HMENU)WinUtil::speedMenu, CTSTRING(UPLOAD_SPEED_LIMIT)); // !SMT!-S
	usersMenu.AppendMenu(MF_POPUP, (UINT_PTR)(HMENU)WinUtil::privateMenu, CTSTRING(IGNORE_PRIVATE)); // !SMT!-PSW
	usersMenu.AppendMenu(MF_STRING, IDC_OPEN_USER_LOG, CTSTRING(OPEN_USER_LOG));
	usersMenu.AppendMenu(MF_SEPARATOR);
	appendUserItems(usersMenu, Util::emptyString); // TODO: hubhint
	usersMenu.AppendMenu(MF_SEPARATOR);
	usersMenu.AppendMenu(MF_STRING, IDC_REMOVE, CTSTRING(REMOVE));
	*/
	
	FavoriteManager::getInstance()->addListener(this);
	SettingsManager::getInstance()->addListener(this);
	
	CLockRedraw<> l_lock_draw(ctrlUsers);
	{
		FavoriteManager::LockInstanceUsers lockedInstance;
		const auto& l_fav_users = lockedInstance.getFavoriteUsersL();
		for (auto i = l_fav_users.cbegin(); i != l_fav_users.cend(); ++i)
		{
			addUser(i->second);
		}
	}
	startup = false;
	bHandled = FALSE;
	return TRUE;
}