author | tille <tille> | 2002-09-03 18:35:54 (UTC) |
---|---|---|
committer | tille <tille> | 2002-09-03 18:35:54 (UTC) |
commit | 6e4c5aebd3d2a7203480e5f408358c677203f9ca (patch) (side-by-side diff) | |
tree | 57df19225fd14d00763669a889d4c816f9f68a38 | |
parent | ed440196145aec276620b45d7a56400f27eabc82 (diff) | |
download | opie-6e4c5aebd3d2a7203480e5f408358c677203f9ca.zip opie-6e4c5aebd3d2a7203480e5f408358c677203f9ca.tar.gz opie-6e4c5aebd3d2a7203480e5f408358c677203f9ca.tar.bz2 |
should fix #180
-rw-r--r-- | noncore/unsupported/oipkg/package.cpp | 2 | ||||
-rw-r--r-- | noncore/unsupported/oipkg/pksettings.cpp | 5 |
2 files changed, 3 insertions, 4 deletions
diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp index 1054a1d..3effb73 100644 --- a/noncore/unsupported/oipkg/package.cpp +++ b/noncore/unsupported/oipkg/package.cpp @@ -215,265 +215,265 @@ QString Package::shortDesc() } QString Package::size() { return _size; } QString Package::version() { return _version; } QString Package::sizeUnits() { int i = _size.toInt(); int c = 0; QString ret; QStringList unit; unit << "B" << "KB" << "MB" << "GB" << "TB"; //prepair for the future ;) while (i > 1) { ret=QString::number(i)+" "+unit[c]; c++; i /= 1024; } return ret; } bool Package::toProcess() { return _toProcess; } bool Package::toRemove() { if ( _toProcess && installed() ) return true; else return false; } bool Package::toInstall() { if ( _toProcess && !installed() ) return true; else return false; } void Package::toggleProcess() { _toProcess = ! _toProcess; } void Package::copyValues( Package* pack ) { if (_size.isEmpty() && !pack->_size.isEmpty()) _size = QString( pack->_size ); if (_section.isEmpty() && !pack->_section.isEmpty()) _section = QString( pack->_section ); if (_subsection.isEmpty()&& !pack->_subsection.isEmpty()) _subsection = QString( pack->_subsection ); if (_shortDesc.isEmpty() && !pack->_shortDesc.isEmpty()) _shortDesc = QString( pack->_shortDesc ); if (_desc.isEmpty() && !pack->_desc.isEmpty()) _desc = QString( pack->_desc ); if (_name.isEmpty() && !pack->_name.isEmpty()) _name = QString( pack->_name ); if (_dest.isEmpty() && !pack->_dest.isEmpty()) _dest= QString( pack->_dest ); if (_displayName.isEmpty()&& !pack->_displayName.isEmpty()) _displayName = QString( pack->_displayName ); if (_fileName.isEmpty() && !pack->_fileName.isEmpty()) _fileName = QString( pack->_fileName ); if (_version.isEmpty() && !pack->_version.isEmpty()) _version = QString( pack->_version ); if (_values.isEmpty() && !pack->_values.isEmpty())_values = QDict<QString>( pack->_values ); if (!installed() && _status.isEmpty() && !pack->_status.isEmpty()) _status = QString( pack->_status ); } QString Package::section() { return _section; } void Package::setSection( QString s) { int i = s.find("/"); if ( i > 0 ) { _section = s.left(i); _subsection = s.mid(i+1); }else{ _section = s; _subsection = ""; } } QString Package::subSection() { return _subsection; } void Package::parsePackage( QStringList pack ) { if ( pack.isEmpty() ) return; int count = pack.count(); for( int i = 0; i < count; i++ ) { QString line = pack[i]; int sep = line.find( QRegExp(":[\t ]+") ); if ( sep >= 0 ) { QString tag = line.left(sep); QString value = line.mid(sep+2).simplifyWhiteSpace(); setValue( tag, value ); }else{ } } return; } QString Package::details() { QString status; Process ipkg_status(QStringList() << "ipkg" << "info" << name() ); QString description; if ( ipkg_status.exec("",status) ) { QStringList lines = QStringList::split('\n',status,TRUE); for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) { QString line = *it; if ( line == " ." ) { description.append("<p>"); } else if ( line[0] == ' ' || line[0] == '\t' ) { // continuation description.append(" "); description.append(Qtopia::escapeString(line)); } else { int sep = line.find(QRegExp(":[\t ]+")); if ( sep >= 0 ) { QString tag = line.left(sep); description.append("<br>"); description.append("<b>"); description.append(Qtopia::escapeString(tag)); description.append(":</b> "); description.append(Qtopia::escapeString(line.mid(sep+2))); } else { description.append(" "); description.append(Qtopia::escapeString(line)); } } } } return description; } void Package::processed() { _toProcess = false; //hack, but we're not writing status anyway... if ( installed() ) _status = "install"; else _status = "installed"; } QString Package::dest() { if ( installed()||(!installed() && _toProcess) ) return _dest!=""?_dest:settings->getDestinationName(); else return ""; } void Package::setDest( QString d ) { if ( d == "remote") _useFileName = true; else _dest = d; } void Package::setOn() { _toProcess = true; } bool Package::link() { if ( _dest == "root" || (!installed() && !_toProcess) ) return false; return _link; } void Package::setLink(bool b) { _link = b; } void Package::parseIpkgFile( QString file) { // 20020830 // a quick hack to make oipkg understand the new ipk format // neu: ar pf PACKAGE control.tar.gz | tar xfOz - ./control > /tmp/control - if (! system("ar pf "+file+" control.tar.gz | tar xfOz - ./control > /tmp/control") ) + if (system("ar pf "+file+" control.tar.gz | tar xfOz - ./control > /tmp/control") != 0) { //#old tar ipk format system("tar xzf "+file+" -C /tmp"); system("tar xzf /tmp/control.tar.gz -C /tmp"); } QFile f("/tmp/control"); if ( f.open(IO_ReadOnly) ) { QTextStream t( &f ); QStringList pack; while ( !t.eof() ) { pack << t.readLine(); } f.close(); parsePackage( pack ); } } //QString Package::getPackageName() //{ // if ( _packageName.isEmpty() ) return _name; // else return _packageName; //} void Package::instalFromFile(bool iff) { _useFileName = iff; } void Package::setName(QString n) { _displayName = n; } QDict<QString>* Package::getFields() { return &_values; } QString Package::status() { return _status; } bool Package::isOld() { if (!_versions) return false; QDictIterator<Package> other( *_versions ); while ( other.current() ) { if (other.current()->version() > version() ) return true; ++other; } return false; } bool Package::hasVersions() { if (!_versions) return false; else return true; } QDict<Package>* Package::getOtherVersions() { return _versions; } void Package::setOtherVersions(QDict<Package> *v) { _versions=v; } diff --git a/noncore/unsupported/oipkg/pksettings.cpp b/noncore/unsupported/oipkg/pksettings.cpp index acabaed..063b018 100644 --- a/noncore/unsupported/oipkg/pksettings.cpp +++ b/noncore/unsupported/oipkg/pksettings.cpp @@ -38,390 +38,389 @@ PackageManagerSettings::PackageManagerSettings( QWidget* parent, const char* na { connect( newserver, SIGNAL(clicked()), this, SLOT(newServer()) ); connect( removeserver, SIGNAL(clicked()), this, SLOT(removeServer()) ); connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); connect( newdestination, SIGNAL(clicked()), this, SLOT(newDestination()) ); connect( removedestination, SIGNAL(clicked()), this, SLOT(removeDestination()) ); connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); // connect( CheckBoxLink, SIGNAL(toggled(bool)), // activeLinkDestination, SLOT(setEnabled(bool)) ); // connect( settingName, SIGNAL(activated(int)), this, SLOT(installationSettingChange(int)) ); // connect( settingName, SIGNAL(textChanged(const QString &)), this, SLOT(installationSettingSetName(const QString &)) ); // connect( newsetting, SIGNAL(clicked()), this, SLOT(newInstallationSetting()) ); // connect( renamesetting, SIGNAL(clicked()), this, SLOT(renameInstallationSetting()) ); // connect( removesetting, SIGNAL(clicked()), this, SLOT(removeInstallationSetting()) ); servername->setEnabled(FALSE); serverurl->setEnabled(FALSE); serverurlDic.setAutoDelete(TRUE); destinationname->setEnabled(FALSE); destinationurl->setEnabled(FALSE); destinationurlDic.setAutoDelete(TRUE); readSettings(); activeLinkDestination->hide(); serverChanged = false; // get rid of setups // Settings->hide(); // settingName->hide(); // newsetting->hide(); // renamesetting->hide(); // removesetting->hide(); } PackageManagerSettings::~PackageManagerSettings() { } void PackageManagerSettings::newServer() { int i = servers->count(); if ( servername->isEnabled() || serverurl->text().isEmpty() ) { serverurlDic.insert(i,new QString("http://")); servers->insertItem(tr("New")); activeServers->insertItem(tr("New")); } else { // allows one-level undo serverurlDic.insert(i,new QString(serverurl->text())); servers->insertItem(servername->text()); activeServers->insertItem(servername->text()); } changed = true; servers->setSelected(i,TRUE); editServer(i); changed = true; } void PackageManagerSettings::newDestination() { int i = destinations->count(); if ( destinationname->isEnabled() || destinationurl->text().isEmpty() ) { destinationurlDic.insert(i,new QString("/")); destinations->insertItem(tr("New")); activeDestination->insertItem(tr("New")); activeLinkDestination->insertItem(tr("New")); } else { // allows one-level undo destinationurlDic.insert(i,new QString(destinationurl->text())); destinations->insertItem(destinationname->text()); activeDestination->insertItem(destinationname->text()); activeLinkDestination->insertItem(destinationname->text()); } destinations->setSelected(i,TRUE); editDestination(i); changed = true; } void PackageManagerSettings::editServer(int i) { if ( servername->isEnabled() ) { disconnect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) ); disconnect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) ); } else { servername->setEnabled(TRUE); serverurl->setEnabled(TRUE); } servername->setText( servers->text(i) ); serverurl->setText( *serverurlDic[i] ); editedserver = i; serverChanged = true; connect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) ); connect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) ); changed = true; } void PackageManagerSettings::editDestination(int i) { if ( destinationname->isEnabled() ) { disconnect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) ); disconnect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) ); } else { destinationname->setEnabled(TRUE); destinationurl->setEnabled(TRUE); //since it does not work anyway // createLinksButton->setEnabled(TRUE); // removeLinksButton->setEnabled(TRUE); } destinationname->setText( destinations->text(i) ); destinationurl->setText( *destinationurlDic[i] ); editeddestination = i; connect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) ); connect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) ); changed = true; } void PackageManagerSettings::removeServer() { disconnect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) ); disconnect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) ); servername->setText(servers->text(editedserver)); serverurl->setText(*serverurlDic[editedserver]); disconnect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); servers->removeItem(editedserver); activeServers->removeItem(editedserver); connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); servername->setEnabled(FALSE); serverurl->setEnabled(FALSE); changed = true; } void PackageManagerSettings::removeDestination() { disconnect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) ); disconnect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) ); destinationname->setText(""); destinationurl->setText(""); disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); destinations->removeItem(editeddestination); activeDestination->removeItem(editeddestination); activeLinkDestination->removeItem(editeddestination); editeddestination=0; connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); destinationname->setEnabled(FALSE); destinationurl->setEnabled(FALSE); changed = true; } void PackageManagerSettings::serverNameChanged(const QString& t) { disconnect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); servers->changeItem( t, editedserver ); activeServers->changeItem( t, editedserver ); connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); changed = true; serverChanged = true; } void PackageManagerSettings::destNameChanged(const QString& t) { disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); destinations->changeItem( t, editeddestination ); activeDestination->changeItem( t, editeddestination ); activeLinkDestination->changeItem( t, editeddestination ); connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); changed = true; } void PackageManagerSettings::serverUrlChanged(const QString& t) { serverurlDic.replace(editedserver, new QString(t)); changed = true; serverChanged = true; } void PackageManagerSettings::destUrlChanged(const QString& t) { destinationurlDic.replace(editeddestination, new QString(t)); changed = true; } void PackageManagerSettings::writeIpkgConfig(const QString& conffile) { QFile conf(conffile); if ( ! conf.open(IO_WriteOnly) ) return; QTextStream s(&conf); - s << "# Written by qpie Package Manager\n"; + s << "# Written by oipkg -- the opie package manager\n"; for (int i=0; i<(int)activeServers->count(); i++) { QString url = serverurlDic[i] ? *serverurlDic[i] : QString("???"); - if ( !activeServers->isSelected(i) ) - s << "#"; + if ( !activeServers->isSelected(i) ) s << "#"; s << "src " << activeServers->text(i) << " " << url << "\n"; } for (int i=0; i<(int)destinations->count(); i++) { QString url = destinationurlDic[i] ? *destinationurlDic[i] : QString("???"); s << "dest " << destinations->text(i) << " " << url << "\n"; } conf.close(); } void PackageManagerSettings::readInstallationSettings() { Config cfg( "oipkg", Config::User ); cfg.setGroup( "Settings" ); installationSettingsCount = cfg.readNumEntry( "count", -1 ); currentSetting = cfg.readNumEntry( "current", 0 );// o should be -1 // for (int i = 0; i < installationSettingsCount; i++) // { // cfg.setGroup( "Setting_" + QString::number(i) ); // settingName->insertItem( cfg.readEntry( "name", "???" ), i ); // }; readInstallationSetting( currentSetting ); } ///** // * remove from conf file // */ //void PackageManagerSettings::removeInstallationSetting() //{ // settingName->removeItem( settingName->currentItem() ); // Config cfg( "oipkg", Config::User ); // cfg.setGroup( "Setting_" + QString::number( installationSettingsCount ) ); // cfg.clearGroup(); // installationSettingsCount--; // changed = true; // settingName->setEditable( false ); //} ///** // * write to confgile // */ //void PackageManagerSettings::newInstallationSetting() //{ // installationSettingsCount++; // settingName->insertItem( "New", installationSettingsCount ); // settingName->setCurrentItem( installationSettingsCount ); // settingName->setEditable( true ); // changed = true; //} //void PackageManagerSettings::installationSettingChange(int cs) //{ // writeCurrentInstallationSetting(); // currentSetting = cs; // readInstallationSetting( cs ); // changed = true; //} void PackageManagerSettings::writeInstallationSettings() { { Config cfg( "oipkg", Config::User ); cfg.setGroup( "Settings" ); cfg.writeEntry( "count", installationSettingsCount ); cfg.writeEntry( "current", currentSetting ); } writeCurrentInstallationSetting(); } void PackageManagerSettings::readInstallationSetting(int setting) { if ( setting < 0 ) return; Config cfg( "oipkg", Config::User ); cfg.setGroup( "Setting_" + QString::number( setting ) ); CheckBoxLink->setChecked( cfg.readBoolEntry( "link", true ) ); QString dest = cfg.readEntry( "dest" ); QString linkdest = cfg.readEntry( "linkdest" ); pvDebug(3, "dest="+dest); pvDebug(3, "linkdest="+linkdest); for ( int i = 0; i < activeDestination->count(); i++) { if ( activeDestination->text( i ) == dest ) activeDestination->setCurrentItem( i ); if ( activeLinkDestination->text( i ) == linkdest ) activeLinkDestination->setCurrentItem( i ); } } void PackageManagerSettings::writeCurrentInstallationSetting() { Config cfg( "oipkg", Config::User ); cfg.setGroup( "Setting_" + QString::number(currentSetting) ); cfg.writeEntry( "link", CheckBoxLink->isChecked() ); cfg.writeEntry( "dest", getDestinationName() ); cfg.writeEntry( "linkdest" , getLinkDestinationName() ); QStringList sers = getActiveServers(); int srvc = 0; for ( QStringList::Iterator it = sers.begin(); it != sers.end(); ++it ) { cfg.writeEntry( "server_" + QString::number(srvc++), *it ); } cfg.writeEntry( "server_count", srvc ); } //void PackageManagerSettings::renameInstallationSetting() //{ // settingName->setEditable( true ); // changed = true; //} //void PackageManagerSettings::installationSettingSetName(const QString &name) //{ // settingName->changeItem( name, settingName->currentItem() ); // changed = true; //} bool PackageManagerSettings::readIpkgConfig(const QString& conffile) { QFile conf(conffile); changed = false; if ( conf.open(IO_ReadOnly) ) { QTextStream s(&conf); servers->clear(); activeServers->clear(); destinations->clear(); activeDestination->clear(); activeLinkDestination->clear(); serverurlDic.clear(); destinationurlDic.clear(); ipkg_old=0; int currentserver=0; while ( !s.atEnd() ) { QString l = s.readLine(); QStringList token = QStringList::split(' ', l); if ( token[0] == "src" || token[0] == "#src" ) { currentserver=servers->count(); serverurlDic.insert(servers->count(),new QString(token[2])); int a = token[0] == "src" ? 1 : 0; int i = servers->count(); servers->insertItem(token[1]); activeServers->insertItem( token[1] ); activeServers->setSelected(i,a); } else if ( token[0] == "dest" ) { currentserver=destinations->count(); destinationurlDic.insert(destinations->count(),new QString(token[2])); destinations->insertItem(token[1]); activeDestination->insertItem( token[1] ); activeLinkDestination->insertItem( token[1] ); } else if ( token[0] == "option" ) { // ### somehow need to use the settings from netsetup // if ( token[1] == "http_proxy" ) // http->setText(token[2]); // else if ( token[1] == "ftp_proxy" ) // ftp->setText(token[2]); // else if ( token[1] == "proxy_username" ) // username->setText(token[2]); // else if ( token[1] == "proxy_password" ) // password->setText(token[2]); } else { // Old style? int eq = l.find('='); if ( eq >= 0 ) { QString v = l.mid(eq+1).stripWhiteSpace(); if ( v[0] == '"' || v[0] == '\'' ) { int cl=v.find(v[0],1); if ( cl >= 0 ) v = v.mid(1,cl-1); } if ( l.left(12) == "IPKG_SOURCE=" ) { ipkg_old=1; currentserver=servers->count(); serverurlDic.insert(servers->count(),new QString(v)); servers->insertItem(v); } else if ( l.left(13) == "#IPKG_SOURCE=" ) { serverurlDic.insert(servers->count(),new QString(v)); servers->insertItem(v); } else if ( l.left(10) == "IPKG_ROOT=" ) { // ### no UI // } else if ( l.left(20) == "IPKG_PROXY_USERNAME=" ) { // username->setText(v); // } else if ( l.left(20) == "IPKG_PROXY_PASSWORD=" ) { // password->setText(v); // } else if ( l.left(16) == "IPKG_PROXY_HTTP=" ) { // http->setText(v); // } else if ( l.left(16) == "IPKG_PROXY_FTP=" ) { |