|
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.
|