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. }
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; }
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); } }
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; }