From: <arn...@us...> - 2007-11-11 15:30:31
|
Revision: 905 http://dcplusplus.svn.sourceforge.net/dcplusplus/?rev=905&view=rev Author: arnetheduck Date: 2007-11-11 07:30:28 -0800 (Sun, 11 Nov 2007) Log Message: ----------- No xmlns in example Modified Paths: -------------- dcplusplus/trunk/ADC.txt dcplusplus/trunk/changelog.txt dcplusplus/trunk/dcpp/AdcHub.cpp dcplusplus/trunk/dcpp/AdcHub.h dcplusplus/trunk/dcpp/ConnectionManager.cpp dcplusplus/trunk/dcpp/UserConnection.cpp dcplusplus/trunk/dcpp/UserConnection.h dcplusplus/trunk/win32/DirectoryListingFrame.cpp dcplusplus/trunk/win32/FinishedFrameBase.h dcplusplus/trunk/win32/HubFrame.h dcplusplus/trunk/win32/PublicHubsFrame.cpp dcplusplus/trunk/win32/QueueFrame.h dcplusplus/trunk/win32/SearchFrame.cpp dcplusplus/trunk/win32/TransferView.cpp dcplusplus/trunk/win32/TypedListView.h dcplusplus/trunk/win32/UsersFrame.cpp Modified: dcplusplus/trunk/ADC.txt =================================================================== --- dcplusplus/trunk/ADC.txt 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/ADC.txt 2007-11-11 15:30:28 UTC (rev 905) @@ -258,13 +258,13 @@ ---- <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<FileListing Version="1" CID="mycid" Generator="DC++ 0.701" Base="/" xmlns="http://dcpp.net/FileListing"> +<FileListing Version="1" CID="mycid" Generator="DC++ 0.701" Base="/"> <Directory Name="share"> <Directory Name="DC++ Prerelease"> <File Name="DCPlusPlus.pdb" Size="17648640" TTH="xxx" /> <File Name="DCPlusPlus.exe" Size="946176" TTH="yyy" /> </Directory> - <File Name="ADC.txt" Size="154112" TTH="zzz" /> + <File Name="ADC.txt" Size="154112" TTH="zzz" /> </Directory> <!-- Only used by partial lists --> <Directory Name="share2" Incomplete="1"/> Modified: dcplusplus/trunk/changelog.txt =================================================================== --- dcplusplus/trunk/changelog.txt 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/changelog.txt 2007-11-11 15:30:28 UTC (rev 905) @@ -7,6 +7,7 @@ * Fixed version info (poy) * Keep selection visible on move up/down in some list views (poy) * Fixed clicking in the header of the favorite hubs list view (poy) +* Update to ADC 0.14 -- 0.703 2007-11-08 -- * Fixed invalid strings (thanks james ross) Modified: dcplusplus/trunk/dcpp/AdcHub.cpp =================================================================== --- dcplusplus/trunk/dcpp/AdcHub.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/dcpp/AdcHub.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -40,6 +40,9 @@ const string AdcHub::ADCS_FEATURE("ADC0"); const string AdcHub::TCP4_FEATURE("TCP4"); const string AdcHub::UDP4_FEATURE("UDP4"); +const string AdcHub::BASE_SUPPORT("ADBASE"); +const string AdcHub::BAS0_SUPPORT("ADBAS0"); +const string AdcHub::TIGR_SUPPORT("ADTIGR"); AdcHub::AdcHub(const string& aHubURL, bool secure) : Client(aHubURL, '\n', secure), sid(0) { TimerManager::getInstance()->addListener(this); @@ -186,12 +189,26 @@ void AdcHub::handle(AdcCommand::SUP, AdcCommand& c) throw() { if(state != STATE_PROTOCOL) /** @todo SUP changes */ return; - if(find(c.getParameters().begin(), c.getParameters().end(), "ADBASE") == c.getParameters().end() - && find(c.getParameters().begin(), c.getParameters().end(), "ADBAS0") == c.getParameters().end()) - { + bool baseOk = false; + bool tigrOk = false; + for(StringIter i = c.getParameters().begin(); i != c.getParameters().end(); ++i) { + if(*i == BAS0_SUPPORT) { + baseOk = true; + tigrOk = true; + } else if(*i == BASE_SUPPORT) { + baseOk = true; + } else if(*i == TIGR_SUPPORT) { + tigrOk = true; + } + } + + if(!baseOk) { fire(ClientListener::StatusMessage(), this, "Failed to negotiate base protocol"); // @todo internationalize socket->disconnect(false); return; + } else if(!tigrOk) { + // What now? Some hubs fake BASE support without TIGR support =/ + fire(ClientListener::StatusMessage(), this, "Hub probably uses an old version of ADC, please encourage the owner to upgrade"); } } @@ -625,7 +642,7 @@ lastInfoMap.clear(); sid = 0; - send(AdcCommand(AdcCommand::CMD_SUP, AdcCommand::TYPE_HUB).addParam("ADBAS0")); + send(AdcCommand(AdcCommand::CMD_SUP, AdcCommand::TYPE_HUB).addParam(BAS0_SUPPORT).addParam(TIGR_SUPPORT)); } void AdcHub::on(Line, const string& aLine) throw() { Modified: dcplusplus/trunk/dcpp/AdcHub.h =================================================================== --- dcplusplus/trunk/dcpp/AdcHub.h 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/dcpp/AdcHub.h 2007-11-11 15:30:28 UTC (rev 905) @@ -77,6 +77,9 @@ static const string ADCS_FEATURE; static const string TCP4_FEATURE; static const string UDP4_FEATURE; + static const string BASE_SUPPORT; + static const string BAS0_SUPPORT; + static const string TIGR_SUPPORT; virtual string checkNick(const string& nick); Modified: dcplusplus/trunk/dcpp/ConnectionManager.cpp =================================================================== --- dcplusplus/trunk/dcpp/ConnectionManager.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/dcpp/ConnectionManager.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -42,7 +42,8 @@ features.push_back(UserConnection::FEATURE_TTHL); features.push_back(UserConnection::FEATURE_TTHF); - adcFeatures.push_back("AD" + UserConnection::FEATURE_ADC_BASE); + adcFeatures.push_back("AD" + UserConnection::FEATURE_ADC_BAS0); + adcFeatures.push_back("AD" + UserConnection::FEATURE_ADC_TIGR); adcFeatures.push_back("AD" + UserConnection::FEATURE_ADC_BZIP); } @@ -327,12 +328,17 @@ } bool baseOk = false; - + bool tigrOk = false; + for(StringIterC i = cmd.getParameters().begin(); i != cmd.getParameters().end(); ++i) { if(i->compare(0, 2, "AD") == 0) { string feat = i->substr(2); - if(feat == UserConnection::FEATURE_ADC_BASE) { + if(feat == UserConnection::FEATURE_ADC_BASE || feat == UserConnection::FEATURE_ADC_BAS0) { baseOk = true; + // For bas0 tiger is implicit + if(feat == UserConnection::FEATURE_ADC_BAS0) { + tigrOk = true; + } // ADC clients must support all these... aSource->setFlag(UserConnection::FLAG_SUPPORTS_ADCGET); aSource->setFlag(UserConnection::FLAG_SUPPORTS_MINISLOTS); @@ -344,6 +350,8 @@ aSource->setFlag(UserConnection::FLAG_SUPPORTS_ZLIB_GET); } else if(feat == UserConnection::FEATURE_ADC_BZIP) { aSource->setFlag(UserConnection::FLAG_SUPPORTS_XML_BZLIST); + } else if(feat == UserConnection::FEATURE_ADC_TIGR) { + tigrOk = true; } } } Modified: dcplusplus/trunk/dcpp/UserConnection.cpp =================================================================== --- dcplusplus/trunk/dcpp/UserConnection.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/dcpp/UserConnection.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -36,8 +36,10 @@ const string UserConnection::FEATURE_ZLIB_GET = "ZLIG"; const string UserConnection::FEATURE_TTHL = "TTHL"; const string UserConnection::FEATURE_TTHF = "TTHF"; -const string UserConnection::FEATURE_ADC_BASE = "BAS0"; +const string UserConnection::FEATURE_ADC_BAS0 = "BAS0"; +const string UserConnection::FEATURE_ADC_BASE = "BASE"; const string UserConnection::FEATURE_ADC_BZIP = "BZIP"; +const string UserConnection::FEATURE_ADC_TIGR = "TIGR"; const string UserConnection::FILE_NOT_AVAILABLE = "File Not Available"; Modified: dcplusplus/trunk/dcpp/UserConnection.h =================================================================== --- dcplusplus/trunk/dcpp/UserConnection.h 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/dcpp/UserConnection.h 2007-11-11 15:30:28 UTC (rev 905) @@ -45,9 +45,11 @@ static const string FEATURE_ZLIB_GET; static const string FEATURE_TTHL; static const string FEATURE_TTHF; + static const string FEATURE_ADC_BAS0; static const string FEATURE_ADC_BASE; static const string FEATURE_ADC_BZIP; - + static const string FEATURE_ADC_TIGR; + static const string FILE_NOT_AVAILABLE; enum Modes { Modified: dcplusplus/trunk/win32/DirectoryListingFrame.cpp =================================================================== --- dcplusplus/trunk/win32/DirectoryListingFrame.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/DirectoryListingFrame.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -173,6 +173,7 @@ // This will set the widths correctly setStatus(STATUS_FILE_LIST_DIFF, TSTRING(FILE_LIST_DIFF)); + setStatus(STATUS_MATCH_QUEUE, TSTRING(MATCH_QUEUE)); setStatus(STATUS_FIND, TSTRING(FIND)); setStatus(STATUS_NEXT, TSTRING(NEXT)); @@ -720,10 +721,6 @@ } void DirectoryListingFrame::clearList() { - int j = files->size(); - for(int i = 0; i < j; i++) { - delete files->getData(i); - } files->clear(); } Modified: dcplusplus/trunk/win32/FinishedFrameBase.h =================================================================== --- dcplusplus/trunk/win32/FinishedFrameBase.h 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/FinishedFrameBase.h 2007-11-11 15:30:28 UTC (rev 905) @@ -267,7 +267,6 @@ int i; while((i = items->getNext(-1, LVNI_SELECTED)) != -1) { FinishedManager::getInstance()->remove(items->getData(i)->entry, in_UL); - delete items->getData(i); items->erase(i); } } @@ -299,10 +298,6 @@ } void clearList() { - unsigned n = items->size(); - for(unsigned i = 0; i < n; ++i) - delete items->getData(i); - items->clear(); } Modified: dcplusplus/trunk/win32/HubFrame.h =================================================================== --- dcplusplus/trunk/win32/HubFrame.h 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/HubFrame.h 2007-11-11 15:30:28 UTC (rev 905) @@ -149,7 +149,7 @@ WidgetVPanedPtr paned; WidgetCheckBoxPtr showUsers; - typedef TypedListView<HubFrame, UserInfo> WidgetUsers; + typedef TypedListView<HubFrame, UserInfo, false> WidgetUsers; typedef WidgetUsers* WidgetUsersPtr; WidgetUsersPtr users; Modified: dcplusplus/trunk/win32/PublicHubsFrame.cpp =================================================================== --- dcplusplus/trunk/win32/PublicHubsFrame.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/PublicHubsFrame.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -280,7 +280,6 @@ } void PublicHubsFrame::updateList() { - hubs->forEachT(DeleteFunction()); hubs->clear(); users = 0; visibleHubs = 0; Modified: dcplusplus/trunk/win32/QueueFrame.h =================================================================== --- dcplusplus/trunk/win32/QueueFrame.h 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/QueueFrame.h 2007-11-11 15:30:28 UTC (rev 905) @@ -208,7 +208,7 @@ typedef WidgetDirs* WidgetDirsPtr; WidgetDirsPtr dirs; - typedef TypedListView<QueueFrame, QueueItemInfo> WidgetFiles; + typedef TypedListView<QueueFrame, QueueItemInfo, false> WidgetFiles; typedef WidgetFiles* WidgetFilesPtr; WidgetFilesPtr files; WidgetVPanedPtr paned; Modified: dcplusplus/trunk/win32/SearchFrame.cpp =================================================================== --- dcplusplus/trunk/win32/SearchFrame.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/SearchFrame.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -409,11 +409,6 @@ } void SearchFrame::postClosing() { - results->forEachT(DeleteFunction()); - results->clear(); - hubs->forEachT(DeleteFunction()); - hubs->clear(); - SettingsManager::getInstance()->set(SettingsManager::SEARCHFRAME_ORDER, WinUtil::toString(results->getColumnOrder())); SettingsManager::getInstance()->set(SettingsManager::SEARCHFRAME_WIDTHS, WinUtil::toString(results->getColumnWidths())); } @@ -761,7 +756,6 @@ void SearchFrame::handleRemove() { int i = -1; while((i = results->getNext(-1, LVNI_SELECTED)) != -1) { - delete results->getData(i); results->erase(i); } } @@ -899,7 +893,6 @@ if (nItem == n) return; - delete hubs->getData(nItem); hubs->setData(nItem, info); hubs->update(nItem); @@ -919,7 +912,6 @@ if (nItem == n) return; - delete hubs->getData(nItem); hubs->erase(nItem); hubs->setColumnWidth(0, LVSCW_AUTOSIZE); } @@ -967,7 +959,6 @@ int64_t llsize = (int64_t)lsize; - results->forEachT(DeleteFunction()); results->clear(); { Modified: dcplusplus/trunk/win32/TransferView.cpp =================================================================== --- dcplusplus/trunk/win32/TransferView.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/TransferView.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -94,8 +94,6 @@ SettingsManager::getInstance()->set(SettingsManager::MAINFRAME_ORDER, WinUtil::toString(transfers->getColumnOrder())); SettingsManager::getInstance()->set(SettingsManager::MAINFRAME_WIDTHS, WinUtil::toString(transfers->getColumnWidths())); - transfers->forEach(&ItemInfo::deleteSelf); - return 0; } @@ -345,7 +343,6 @@ ItemInfo* ii = transfers->getData(i); if(*ui == *ii) { transfers->erase(i); - delete ii; break; } } Modified: dcplusplus/trunk/win32/TypedListView.h =================================================================== --- dcplusplus/trunk/win32/TypedListView.h 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/TypedListView.h 2007-11-11 15:30:28 UTC (rev 905) @@ -19,12 +19,12 @@ #ifndef DCPLUSPLUS_WIN32_TYPED_LIST_VIEW_H #define DCPLUSPLUS_WIN32_TYPED_LIST_VIEW_H -template<class T, class ContentType> +template<class T, class ContentType, bool managed = true> class TypedListView : public T::WidgetListView { private: typedef typename T::WidgetListView BaseType; - typedef TypedListView<T, ContentType> ThisType; + typedef TypedListView<T, ContentType, managed> ThisType; public: typedef ThisType* ObjectType; @@ -33,6 +33,11 @@ } + ~TypedListView() { + if(managed) + this->clear(); + } + void create( const typename BaseType::Seed & cs = BaseType::getDefaultSeed() ) { BaseType::create(cs); @@ -57,6 +62,9 @@ } void setData(int iItem, ContentType* lparam) { + if(managed) { + delete getData(iItem); + } BaseType::setData(iItem, reinterpret_cast<LPARAM>(lparam)); } @@ -109,7 +117,9 @@ void update(ContentType* item) { int i = find(item); if(i != -1) update(i); } - using BaseType::erase; + void clear() { if(managed) this->forEachT(DeleteFunction()); this->BaseType::clear(); } + void erase(int i) { if(managed) delete getData(i); this->BaseType::erase(i); } + void erase(ContentType* item) { int i = find(item); if(i != -1) this->erase(i); } int getSortPos(ContentType* a) { Modified: dcplusplus/trunk/win32/UsersFrame.cpp =================================================================== --- dcplusplus/trunk/win32/UsersFrame.cpp 2007-11-11 15:23:38 UTC (rev 904) +++ dcplusplus/trunk/win32/UsersFrame.cpp 2007-11-11 15:30:28 UTC (rev 905) @@ -87,8 +87,6 @@ void UsersFrame::postClosing() { SettingsManager::getInstance()->set(SettingsManager::USERSFRAME_ORDER, WinUtil::toString(users->getColumnOrder())); SettingsManager::getInstance()->set(SettingsManager::USERSFRAME_WIDTHS, WinUtil::toString(users->getColumnWidths())); - - users->forEachT(DeleteFunction()); } UsersFrame::UserInfo::UserInfo(const FavoriteUser& u) : UserInfoBase(u.getUser()) { @@ -128,7 +126,6 @@ UserInfo *ui = users->getData(i); if(ui->user == aUser.getUser()) { users->erase(i); - delete ui; return; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |