summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/listviewitemoipkg.cpp38
-rw-r--r--noncore/unsupported/oipkg/listviewitemoipkg.h33
-rw-r--r--noncore/unsupported/oipkg/mainwindow.h1
-rw-r--r--noncore/unsupported/oipkg/oipkg.pro2
-rw-r--r--noncore/unsupported/oipkg/package.cpp98
-rw-r--r--noncore/unsupported/oipkg/package.h22
-rw-r--r--noncore/unsupported/oipkg/packagelist.cpp34
-rw-r--r--noncore/unsupported/oipkg/packagelist.h20
-rw-r--r--noncore/unsupported/oipkg/packagelistdoclnk.cpp2
-rw-r--r--noncore/unsupported/oipkg/packagelistitem.cpp95
-rw-r--r--noncore/unsupported/oipkg/packagelistitem.h32
-rw-r--r--noncore/unsupported/oipkg/packagelistlocal.cpp2
-rw-r--r--noncore/unsupported/oipkg/packagelistview.cpp91
-rw-r--r--noncore/unsupported/oipkg/packagelistview.h13
-rw-r--r--noncore/unsupported/oipkg/pmipkg.cpp10
-rw-r--r--noncore/unsupported/oipkg/pmipkg.h8
16 files changed, 309 insertions, 192 deletions
diff --git a/noncore/unsupported/oipkg/listviewitemoipkg.cpp b/noncore/unsupported/oipkg/listviewitemoipkg.cpp
new file mode 100644
index 0000000..30b5a5e
--- a/dev/null
+++ b/noncore/unsupported/oipkg/listviewitemoipkg.cpp
@@ -0,0 +1,38 @@
+#include "listviewitemoipkg.h"
+#include "packagelistview.h"
+
+#include <qlistview.h>
+
+ListViewItemOipkg::ListViewItemOipkg(QListView *parent, QString name, QCheckListItem::Type qct, Type type)
+ : QCheckListItem(parent,name,qct)
+{
+ _type = type;
+}
+ListViewItemOipkg::ListViewItemOipkg(QListView *parent, QString name, Type type)
+ : QCheckListItem(parent,name,CheckBox)
+{
+ _type = type;
+}
+
+ListViewItemOipkg::ListViewItemOipkg(ListViewItemOipkg *parent, QString name, Type type)
+ : QCheckListItem(parent,name,CheckBox)
+{
+ _type = type;
+}
+
+ListViewItemOipkg::ListViewItemOipkg(PackageListView *parent, QString name, Type type)
+ : QCheckListItem(parent,name,Controller)
+{
+ _type = type;
+}
+
+ListViewItemOipkg::ListViewItemOipkg(ListViewItemOipkg *parent, Type type, QString name)
+ : QCheckListItem(parent,name,Controller)
+{
+ _type = type;
+}
+
+ListViewItemOipkg::~ListViewItemOipkg()
+{
+// delete _popupMenu;
+}
diff --git a/noncore/unsupported/oipkg/listviewitemoipkg.h b/noncore/unsupported/oipkg/listviewitemoipkg.h
new file mode 100644
index 0000000..4f7d2d7
--- a/dev/null
+++ b/noncore/unsupported/oipkg/listviewitemoipkg.h
@@ -0,0 +1,33 @@
+#ifndef LISTVIEWITEMOIPKG_H
+#define LISTVIEWITEMOIPKG_H
+
+#include <qpopupmenu.h>
+#include <qstring.h>
+#include <qlistview.h>
+#include <qcheckbox.h>
+
+class PackageListItem;
+class PackageListView;
+
+class ListViewItemOipkg : public QObject, public QCheckListItem
+{
+Q_OBJECT
+public:
+ enum Type {Package, Feed, Attribute};
+
+ ListViewItemOipkg(QListView *parent, QString name, QCheckListItem::Type qct, Type type); ListViewItemOipkg(QListView *parent, QString name, Type type);
+ ListViewItemOipkg(ListViewItemOipkg *parent, QString name, Type type);
+ ListViewItemOipkg(PackageListView *parent, QString name, Type type);
+ ListViewItemOipkg(ListViewItemOipkg *parent, Type type, QString name);
+ ~ListViewItemOipkg();
+
+ int getType() {return _type;};
+ virtual QPopupMenu* getPopupMenu() {return 0;};
+protected slots:
+ virtual void menuAction(int ) {};
+protected:
+ int _type;
+ static QPopupMenu* _popupMenu;
+};
+
+#endif
diff --git a/noncore/unsupported/oipkg/mainwindow.h b/noncore/unsupported/oipkg/mainwindow.h
index 354c585..f32352b 100644
--- a/noncore/unsupported/oipkg/mainwindow.h
+++ b/noncore/unsupported/oipkg/mainwindow.h
@@ -1,68 +1,69 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// Copyright (C) 2000 Trolltech AS.
// adadpted form qpe/qipkg
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <qmainwindow.h>
#include <qaction.h>
#include <qtimer.h>
#include <qpopupmenu.h>
+#include "package.h"
#include "packagelist.h"
#include "packagelistremote.h"
#include "packagelistlocal.h"
#include "packagelistdoclnk.h"
#include "pmipkg.h"
#include "pksettings.h"
#include "packagelistview.h"
class QComboBox;
class QPEToolBar;
class QLineEdit;
class PackageListItem;
class QCopChannel;
class QMessageBox;
class QCheckBox;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
~MainWindow();
void makeChannel();
QCopChannel *channel;
protected slots:
void runIpkg();
void updateList();
void displayList();
void subSectionChanged();
void sectionChanged();
void showSettings(int);
void showSettingsSetup();
void showSettingsSrv();
void showSettingsDst();
public slots:
void sectionClose();
void sectionShow(bool);
void findClose();
void findShow(bool);
void searchClose();
void searchShow(bool);
void destClose();
void destShow(bool);
diff --git a/noncore/unsupported/oipkg/oipkg.pro b/noncore/unsupported/oipkg/oipkg.pro
index 986cbcd..230df2c 100644
--- a/noncore/unsupported/oipkg/oipkg.pro
+++ b/noncore/unsupported/oipkg/oipkg.pro
@@ -1,51 +1,53 @@
DESTDIR = $(OPIEDIR)/bin
TEMPLATE = app
#CONFIG = qt warn_on release
CONFIG = qt warn_on debug
HEADERS = mainwindow.h \
pksettings.h \
pmipkg.h \
packagelistdoclnk.h \
installdialog.h \
utils.h \
+ listviewitemoipkg.h \
packagelistitem.h \
packagelistremote.h \
packagelist.h \
packagelistlocal.h \
packagelistview.h \
package.h
SOURCES = main.cpp \
mainwindow.cpp \
utils.cpp \
packagelistdoclnk.cpp \
packagelistview.cpp \
installdialog.cpp \
+ listviewitemoipkg.cpp \
packagelistremote.cpp \
packagelistlocal.cpp \
pksettings.cpp \
pmipkg.cpp \
packagelistitem.cpp \
packagelist.cpp \
package.cpp
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/ioclude
LIBS += -lqpe
LIBS += -lopie
INTERFACES = runwindow.ui \
pksettingsbase.ui
TARGET = oipkg
TRANSLATIONS = ../../../i18n/de/oipkg.ts \
../../../i18n/en/oipkg.ts \
../../../i18n/es/oipkg.ts \
../../../i18n/fr/oipkg.ts \
../../../i18n/hu/oipkg.ts \
../../../i18n/ja/oipkg.ts \
../../../i18n/ko/oipkg.ts \
../../../i18n/no/oipkg.ts \
../../../i18n/pl/oipkg.ts \
../../../i18n/pt/oipkg.ts \
../../../i18n/pt_BR/oipkg.ts \
../../../i18n/sl/oipkg.ts \
../../../i18n/zh_CN/oipkg.ts \
../../../i18n/zh_TW/oipkg.ts
diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp
index 3effb73..e020601 100644
--- a/noncore/unsupported/oipkg/package.cpp
+++ b/noncore/unsupported/oipkg/package.cpp
@@ -1,479 +1,477 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#include "package.h"
#include <qpe/process.h>
#include <qpe/stringutil.h>
#include <qfile.h>
#include <qtextstream.h>
#include <stdlib.h>
#include <unistd.h>
#include "debug.h"
-Package::Package( QObject *parent, const char *name )
+OipkgPackage::OipkgPackage( QObject *parent, const char *name )
: QObject(parent,name)
{
}
-Package::~Package()
+OipkgPackage::~OipkgPackage()
{
}
-Package::Package( PackageManagerSettings *s, QObject *parent, const char *name )
+OipkgPackage::OipkgPackage( PackageManagerSettings *s, QObject *parent, const char *name )
: QObject(parent,name)
{
- Package(parent,name);
init(s);
}
-void Package::init( PackageManagerSettings *s )
+void OipkgPackage::init( PackageManagerSettings *s )
{
settings = s;
_size = "";
_section = "";
_subsection = "";
_shortDesc = "";
_desc = "";
_name = "";
_toProcess = false;
_useFileName = false;
_old = false;
_status = "";
_dest = settings->getDestinationName();
_link = settings->createLinks();
_versions=0;
_version="";
}
-Package::Package( QStringList pack, PackageManagerSettings *s , QObject *parent, const char *name )
+OipkgPackage::OipkgPackage( QStringList pack, PackageManagerSettings *s , QObject *parent, const char *name )
: QObject(parent,name)
{
init(s);
parsePackage( pack );
}
-Package::Package( QString n, PackageManagerSettings *s, QObject *parent, const char *name )
+OipkgPackage::OipkgPackage( QString n, PackageManagerSettings *s, QObject *parent, const char *name )
: QObject(parent,name)
{
init(s);
if ( !QFile::exists( n ) )
{
_name = QString( n );
}else{
pvDebug(4,"remote file: "+n);
parseIpkgFile( n );
_useFileName = true;
_fileName = QString( n );
}
}
-Package::Package( Package *pi, QObject *parent, const char *name )
+OipkgPackage::OipkgPackage( OipkgPackage *pi, QObject *parent, const char *name )
: QObject(parent,name)
{
init(pi->settings);
copyValues( pi );
}
-void Package::setValue( QString n, QString t )
+void OipkgPackage::setValue( QString n, QString t )
{
if ( n == "Package" )
{
_name = QString( t );
}else if ( n == "Installed-Size" )
{
_size = t;
// }else if ( n == "Priority")
// {
}else if ( n == "Section")
{
setSection( t );
// }else if ( n == "Maintainer")
// {
//
// }else if ( n == "Architecture")
// {
}else if ( n == "Version")
{
_version = t;
// }else if ( n == "Pre-Depends")
// {
//
// }else if ( n == "Depends")
// {
}else if ( n == "Filename")
{
_fileName = t;
// }else if ( n == "Size")
// {
//
// }else if ( n == "MD5Sum")
// {
}else if ( n == "Description")
{
setDesc( t );
}else if ( n == "Status")
{
if ( installed() ) return;
_status = t;
// }else if ( n == "Essential")
// {
}else{
_values.insert(n,new QString(t));
}
}
-QString Package::name()
+QString OipkgPackage::name()
{
if (_displayName.isEmpty() ) return _name;
else return _displayName;
}
-QString Package::installName()
+QString OipkgPackage::installName()
{
if (_useFileName) return _fileName;
else return _name;
}
-QString Package::packageName()
+QString OipkgPackage::packageName()
{
QString pn = installName();
pn = pn.right(pn.length()-pn.findRev("/"));
pn = pn.left(pn.find("_"));
return pn;
}
-bool Package::installed()
+bool OipkgPackage::installed()
{
if (_status.contains("installed"))
{
if (_status.contains("not-installed"))
{
_toProcess = true;
return false;
}
else return true;
}
else
if (_versions)
{
- QDictIterator<Package> other( *_versions );
+ QDictIterator<OipkgPackage> other( *_versions );
while ( other.current() )
{
if (other.current()->status().contains("installed")
&& other.current()->version() == version())
return true;
++other;
}
}
return false;
}
-bool Package::otherInstalled()
+bool OipkgPackage::otherInstalled()
{
if (_versions)
{
- QDictIterator<Package> other( *_versions );
+ QDictIterator<OipkgPackage> other( *_versions );
while ( other.current() )
{
if (other.current()->installed()) return true;
++other;
}
}
return false;
}
-void Package::setDesc( QString s )
+void OipkgPackage::setDesc( QString s )
{
_desc = s;
_shortDesc = s.left( s.find("\n") );
}
-QString Package::desc()
+QString OipkgPackage::desc()
{
return _desc;
}
-QString Package::shortDesc()
+QString OipkgPackage::shortDesc()
{
return _shortDesc;
}
-QString Package::size()
+QString OipkgPackage::size()
{
return _size;
}
-QString Package::version()
+QString OipkgPackage::version()
{
return _version;
}
-QString Package::sizeUnits()
+QString OipkgPackage::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()
+bool OipkgPackage::toProcess()
{
return _toProcess;
}
-bool Package::toRemove()
+bool OipkgPackage::toRemove()
{
if ( _toProcess && installed() ) return true;
else return false;
}
-bool Package::toInstall()
+bool OipkgPackage::toInstall()
{
if ( _toProcess && !installed() ) return true;
else return false;
}
-void Package::toggleProcess()
+void OipkgPackage::toggleProcess()
{
_toProcess = ! _toProcess;
}
-
-void Package::copyValues( Package* pack )
+void OipkgPackage::copyValues( OipkgPackage* 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()
+QString OipkgPackage::section()
{
return _section;
}
-void Package::setSection( QString s)
+void OipkgPackage::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()
+QString OipkgPackage::subSection()
{
return _subsection;
}
-void Package::parsePackage( QStringList pack )
+void OipkgPackage::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 OipkgPackage::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()
+void OipkgPackage::processed()
{
_toProcess = false;
//hack, but we're not writing status anyway...
if ( installed() ) _status = "install";
else _status = "installed";
}
-QString Package::dest()
+QString OipkgPackage::dest()
{
if ( installed()||(!installed() && _toProcess) )
return _dest!=""?_dest:settings->getDestinationName();
else return "";
}
-void Package::setDest( QString d )
+void OipkgPackage::setDest( QString d )
{
if ( d == "remote") _useFileName = true;
else _dest = d;
}
-void Package::setOn()
+void OipkgPackage::setOn()
{
_toProcess = true;
}
-bool Package::link()
+bool OipkgPackage::link()
{
if ( _dest == "root" || (!installed() && !_toProcess) ) return false;
return _link;
}
-void Package::setLink(bool b)
+void OipkgPackage::setLink(bool b)
{
_link = b;
}
-void Package::parseIpkgFile( QString file)
+void OipkgPackage::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") != 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()
+//QString OipkgPackage::getPackageName()
//{
// if ( _packageName.isEmpty() ) return _name;
// else return _packageName;
//}
-void Package::instalFromFile(bool iff)
+void OipkgPackage::instalFromFile(bool iff)
{
_useFileName = iff;
}
-void Package::setName(QString n)
+void OipkgPackage::setName(QString n)
{
_displayName = n;
}
-QDict<QString>* Package::getFields()
+QDict<QString>* OipkgPackage::getFields()
{
return &_values;
}
-QString Package::status()
+QString OipkgPackage::status()
{
return _status;
}
-bool Package::isOld()
+bool OipkgPackage::isOld()
{
if (!_versions) return false;
- QDictIterator<Package> other( *_versions );
+ QDictIterator<OipkgPackage> other( *_versions );
while ( other.current() ) {
if (other.current()->version() > version() ) return true;
++other;
}
return false;
}
-bool Package::hasVersions()
+bool OipkgPackage::hasVersions()
{
if (!_versions) return false;
else return true;
}
-QDict<Package>* Package::getOtherVersions()
+QDict<OipkgPackage>* OipkgPackage::getOtherVersions()
{
return _versions;
}
-void Package::setOtherVersions(QDict<Package> *v)
+void OipkgPackage::setOtherVersions(QDict<OipkgPackage> *v)
{
_versions=v;
}
diff --git a/noncore/unsupported/oipkg/package.h b/noncore/unsupported/oipkg/package.h
index c147420..2334c31 100644
--- a/noncore/unsupported/oipkg/package.h
+++ b/noncore/unsupported/oipkg/package.h
@@ -1,100 +1,100 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#ifndef PK_ITEM_H
#define PK_ITEM_H
#include <qstring.h>
#include <qlistview.h>
#include <qpainter.h>
#include <qpixmap.h>
#include <qdict.h>
#include <qobject.h>
#include "pksettings.h"
-class Package : public QObject
+class OipkgPackage : public QObject
{
Q_OBJECT
public:
- Package(QObject *parent=0, const char *name=0);
- Package(PackageManagerSettings *s, QObject *parent=0, const char *name=0);
- ~Package();
- Package( QStringList, PackageManagerSettings *s, QObject *parent=0, const char *name=0 );
- Package( QString, PackageManagerSettings *s, QObject *parent=0, const char *name=0 );
- Package( Package*s, QObject *parent=0, const char *name=0 );
+ OipkgPackage(QObject *parent=0, const char *name=0);
+ OipkgPackage(PackageManagerSettings *s, QObject *parent=0, const char *name=0);
+ ~OipkgPackage();
+ OipkgPackage( QStringList, PackageManagerSettings *s, QObject *parent=0, const char *name=0 );
+ OipkgPackage( QString, PackageManagerSettings *s, QObject *parent=0, const char *name=0 );
+ OipkgPackage( OipkgPackage*s, QObject *parent=0, const char *name=0 );
void setValue( QString, QString );
- void copyValues( Package* );
+ void copyValues( OipkgPackage* );
QString name();
QString installName();
QString packageName();
bool installed();
bool otherInstalled();
void setDesc( QString );
QString shortDesc();
QString desc();
QString size();
QString sizeUnits();
QString version();
void setSection( QString );
QString section();
QString subSection();
QString details();
bool toProcess();
bool toInstall();
bool toRemove();
void processed();
QString dest();
void setDest( QString d );
void setOn();
bool link();
void setLink(bool);
bool isOld();
bool hasVersions();
void parseIpkgFile( QString );
void instalFromFile(bool iff=true);
void setName(QString);
QDict<QString>* getFields();
QString status();
- QDict<Package>* getOtherVersions();
- void setOtherVersions(QDict<Package>*);
+ QDict<OipkgPackage>* getOtherVersions();
+ void setOtherVersions(QDict<OipkgPackage>*);
public slots:
void toggleProcess();
private:
PackageManagerSettings *settings;
QString _displayName;
QString _name;
QString _fileName;
bool _old;
bool _hasVersions;
bool _toProcess;
bool _link;
QString _status;
QString _size;
QString _section;
QString _subsection;
QString _shortDesc;
QString _desc;
QString _version;
QString _dest;
QDict<QString> _values;
- QDict<Package> *_versions;
+ QDict<OipkgPackage> *_versions;
bool _useFileName;
void parsePackage( QStringList );
void init(PackageManagerSettings *);
};
#endif
diff --git a/noncore/unsupported/oipkg/packagelist.cpp b/noncore/unsupported/oipkg/packagelist.cpp
index edb9cc5..5f79ec1 100644
--- a/noncore/unsupported/oipkg/packagelist.cpp
+++ b/noncore/unsupported/oipkg/packagelist.cpp
@@ -1,240 +1,240 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#include "packagelist.h"
#include <assert.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <qtextstream.h>
#include "debug.h"
-static QDict<Package> *packageListAll;
+static QDict<OipkgPackage> *packageListAll;
static int packageListAllRefCount = 0;
PackageList::PackageList(QObject *parent, const char *name)
: QObject(parent,name), packageIter( packageList )
{
empty=true;
- if (!packageListAll) packageListAll = new QDict<Package>();
+ if (!packageListAll) packageListAll = new QDict<OipkgPackage>();
packageListAllRefCount++;
sections << "All";
subSections.insert("All", new QStringList() );
QStringList *ss = subSections["All"];
*ss << "All";
aktSection = "All";
aktSubSection = "All";
}
PackageList::PackageList( PackageManagerSettings* s, QObject *parent, const char *name)
: QObject(parent,name), packageIter( packageList )
{
settings = s;
PackageList(parent, name);
}
PackageList::~PackageList()
{
if (--packageListAllRefCount < 1 ) delete packageListAll;
}
/** Inserts a package into the list */
-void PackageList::insertPackage( Package* pack )
+void PackageList::insertPackage( OipkgPackage* pack )
{
if (!pack) return;
- Package* p = packageListAll->find( pack->name() );
+ OipkgPackage* p = packageListAll->find( pack->name() );
if ( p )
{
if ( (p->version() == pack->version())
// && (p->dest() == pack->dest())
)
{
p->copyValues( pack );
delete pack;
pack = p;
} else {
- QDict<Package> *packver = p->getOtherVersions();
+ QDict<OipkgPackage> *packver = p->getOtherVersions();
// p->setName( pack->name()+"["+p->version()+"]" );
if (!packver)
{
- packver = new QDict<Package>();
+ packver = new QDict<OipkgPackage>();
packver->insert( pack->name(), p );
p->setOtherVersions( packver );
}
pack->setName( pack->name() );//+"["+pack->version()+"]" );
pack->setOtherVersions( packver );
packver->insert( pack->name(), pack );
packageListAll->insert( pack->name(), pack );
packageList.insert( pack->name(), pack );
origPackageList.insert( pack->name(), pack );
}
}else{
packageListAll->insert( pack->name(), pack );
packageList.insert( pack->name(), pack );
origPackageList.insert( pack->name(), pack );
};
empty=false;
updateSections( pack );
}
void PackageList::filterPackages( QString f )
{
packageList.clear();
- QDictIterator<Package> filterIter( origPackageList );
+ QDictIterator<OipkgPackage> filterIter( origPackageList );
filterIter.toFirst();
- Package *pack= filterIter.current() ;
+ OipkgPackage *pack= filterIter.current() ;
while ( pack )
{
if (
((aktSection=="All")||(pack->section()==aktSection)) &&
((aktSubSection=="All")||(pack->subSection()==aktSubSection)) &&
pack->name().contains( f )
)
{
packageList.insert( pack->name(), pack );
}
++filterIter;
pack = filterIter.current();
}
}
-Package* PackageList::find( QString n )
+OipkgPackage* PackageList::find( QString n )
{
return packageList.find( n );
}
-Package* PackageList::first()
+OipkgPackage* PackageList::first()
{
packageIter.toFirst();
return packageIter.current();
}
-Package* PackageList::next()
+OipkgPackage* PackageList::next()
{
++packageIter;
return packageIter.current();
}
QStringList PackageList::getSections()
{
sections.sort();
return sections;
}
QStringList PackageList::getSubSections()
{
QStringList ss;
if ( !subSections[aktSection] ) return ss;
ss = *subSections[aktSection];
ss.sort();
return ss;
}
void PackageList::setSection( QString sec )
{
aktSection = sec;
}
void PackageList::setSubSection( QString ssec )
{
aktSubSection = ssec;
}
-void PackageList::updateSections( Package* pack )
+void PackageList::updateSections( OipkgPackage* pack )
{
QString s = pack->section();
if ( s.isEmpty() || s == "") return;
if ( !sections.contains(s) ) sections += s;
QString ss = pack->subSection();
if ( ss.isEmpty() || ss == "" ) return;
if ( !subSections[s] ) {
subSections.insert( s, new QStringList() );
QStringList *subsecs = subSections[s];
*subsecs += "All";
}
QStringList *subsecs = subSections[s];
if ( !subsecs->contains(ss) ) *subsecs += ss;
// if ( !subSections["All"] ) subSections.insert( "All", new QStringList() );
// subsecs = subSections["All"];
// *subsecs += ss;
}
void PackageList::readFileEntries( QString filename, QString dest )
{
pvDebug(5,"PackageList::readFileEntries "+filename+" dest "+dest);
QStringList packEntry;
QFile f( filename );
if ( !f.open(IO_ReadOnly) ) return;
QTextStream *statusStream = new QTextStream( &f );
while ( !statusStream ->eof() )
{
QString line = statusStream->readLine();
if ( line.find(QRegExp("[\n\t ]*")) || line == "" )
{
//end of package
if ( ! packEntry.isEmpty() )
{
- Package *p = new Package( packEntry, settings );
+ OipkgPackage *p = new OipkgPackage( packEntry, settings );
if ( p )
{
p->setDest( dest );
insertPackage( p );
packEntry.clear();
}
}
}else{
packEntry << line;
};
}
//there might be no nl at the end of the package file
if ( ! packEntry.isEmpty() )
{
- Package *p = new Package( packEntry, settings );
+ OipkgPackage *p = new OipkgPackage( packEntry, settings );
if ( p )
{
p->setDest( dest );
insertPackage( p );
packEntry.clear();
}
}
delete statusStream;
return;
}
void PackageList::setSettings( PackageManagerSettings *s )
{
settings = s;
}
-Package* PackageList::getByName( QString n )
+OipkgPackage* PackageList::getByName( QString n )
{
return origPackageList[n];
}
void PackageList::clear()
{
origPackageList.clear();
packageList.clear();
}
void PackageList::allPackages()
{
packageList.clear();
- QDictIterator<Package> filterIter( origPackageList );
+ QDictIterator<OipkgPackage> filterIter( origPackageList );
filterIter.toFirst();
- Package *pack= filterIter.current() ;
+ OipkgPackage *pack= filterIter.current() ;
while ( pack )
{
packageList.insert( pack->name(), pack );
++filterIter;
pack = filterIter.current();
}
}
diff --git a/noncore/unsupported/oipkg/packagelist.h b/noncore/unsupported/oipkg/packagelist.h
index 0c13688..88a8793 100644
--- a/noncore/unsupported/oipkg/packagelist.h
+++ b/noncore/unsupported/oipkg/packagelist.h
@@ -1,69 +1,69 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#ifndef PACKAGELIST_H
#define PACKAGELIST_H
#include <qdict.h>
#include "package.h"
#include "pksettings.h"
#include "debug.h"
class PackageList : public QObject
{
Q_OBJECT
public:
// static QString all = QObject::tr("All");
PackageList (QObject *parent=0, const char *name=0);
PackageList( PackageManagerSettings *s, QObject *parent=0, const char *name=0);
virtual ~PackageList();
- void insertPackage( Package* );
- Package* find( QString );
- Package* next();
- Package* first();
+ void insertPackage( OipkgPackage* );
+ OipkgPackage* find( QString );
+ OipkgPackage* next();
+ OipkgPackage* first();
QStringList getSections();
QStringList getSubSections();
void setSettings( PackageManagerSettings* );
void filterPackages( QString );
- Package* getByName( QString );
+ OipkgPackage* getByName( QString );
void clear();
void allPackages();
- QDict<Package> *versions;
+ QDict<OipkgPackage> *versions;
public slots:
void setSection(QString);
void setSubSection(QString);
// virtual void update();
protected:
int currentPackage;
int packageCount;
PackageManagerSettings *settings;
- QDict<Package> packageList;
- QDict<Package> origPackageList;
- QDictIterator<Package> packageIter;
+ QDict<OipkgPackage> packageList;
+ QDict<OipkgPackage> origPackageList;
+ QDictIterator<OipkgPackage> packageIter;
bool empty;
QString aktSection;
QString aktSubSection;
QStringList sections;
QDict<QStringList> subSections;
QDict<bool> sectionsDict;
- void updateSections( Package* );
+ void updateSections( OipkgPackage* );
void readFileEntries( QString file, QString dest="" );
};
#endif
diff --git a/noncore/unsupported/oipkg/packagelistdoclnk.cpp b/noncore/unsupported/oipkg/packagelistdoclnk.cpp
index 76e91ff..a7a6f70 100644
--- a/noncore/unsupported/oipkg/packagelistdoclnk.cpp
+++ b/noncore/unsupported/oipkg/packagelistdoclnk.cpp
@@ -3,51 +3,51 @@
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#include "packagelistdoclnk.h"
#include <qpe/applnk.h>
#include <qpe/config.h>
#include <qlist.h>
#include "package.h"
#include "pksettings.h"
PackageListDocLnk::PackageListDocLnk(PackageManagerSettings* s, QObject *parent, const char *name)
: PackageList(s)
{
PackageListDocLnk(parent, name);
}
PackageListDocLnk::PackageListDocLnk(QObject *parent, const char *name)
: PackageList(parent, name)
{
Config cfg( "oipkg", Config::User );
cfg.setGroup( "Common" );
docLnkDir = cfg.readEntry( "docLnkDir", "/root/" );
pvDebug(2,"opening DocLnkSet "+docLnkDir);
doclnkset = new DocLnkSet(docLnkDir,"application/ipkg");
}
PackageListDocLnk::~PackageListDocLnk()
{
Config cfg( "oipkg", Config::User );
cfg.setGroup( "Common" );
cfg.writeEntry( "docLnkDir", docLnkDir );
delete doclnkset;
}
void PackageListDocLnk::update()
{
pvDebug(2,"PackageListDocLnk::update ");
QList<DocLnk> packlist = doclnkset->children();
for (DocLnk *pack =packlist.first(); pack != 0; pack=packlist.next() )
{
- insertPackage( new Package(pack->file(), settings ) );
+ insertPackage( new OipkgPackage(pack->file(), settings ) );
}
}
diff --git a/noncore/unsupported/oipkg/packagelistitem.cpp b/noncore/unsupported/oipkg/packagelistitem.cpp
index 03bf477..4380393 100644
--- a/noncore/unsupported/oipkg/packagelistitem.cpp
+++ b/noncore/unsupported/oipkg/packagelistitem.cpp
@@ -1,103 +1,118 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#include "packagelistitem.h"
#include <qpe/resource.h>
#include <qobject.h>
+#include <qpopupmenu.h>
+#include <qaction.h>
#include "debug.h"
static QPixmap *pm_uninstalled=0;
static QPixmap *pm_uninstalled_old=0;
static QPixmap *pm_installed=0;
static QPixmap *pm_installed_old=0;
static QPixmap *pm_uninstall=0;
static QPixmap *pm_install=0;
static QPixmap *pm_uninstalled_old_installed_new=0;
static QPixmap *pm_uninstalled_installed_old=0;
-PackageListItem::PackageListItem(QListView* lv, Package *pi, PackageManagerSettings *s)
- : QCheckListItem(lv,pi->name(),CheckBox)
+PackageListItem::PackageListItem(ListViewItemOipkg *parent, QString name, Type ittype)
+ : ListViewItemOipkg(parent,name,ittype)
+{
+
+}
+
+PackageListItem::PackageListItem(QListView* lv, OipkgPackage *pi, PackageManagerSettings *s)
+ : ListViewItemOipkg(lv,pi->name(),ListViewItemOipkg::Package)
{
init(pi,s);
}
-PackageListItem::PackageListItem(QListViewItem *lvi, Package *pi, PackageManagerSettings *s)
- : QCheckListItem(lvi,pi->name(),CheckBox)
+PackageListItem::PackageListItem(ListViewItemOipkg *lvi, OipkgPackage *pi, PackageManagerSettings *s)
+ : ListViewItemOipkg(lvi,pi->name(),ListViewItemOipkg::Package)
{
init(pi,s);
}
+PackageListItem::~PackageListItem()
+{
+ delete popupMenu;
+ delete destsMenu;
+}
-void PackageListItem::init( Package *pi, PackageManagerSettings *s)
+void PackageListItem::init( OipkgPackage *pi, PackageManagerSettings *s)
{
+ popupMenu = new QPopupMenu( 0 );
+ destsMenu = new QPopupMenu( 0 );
package = pi;
settings = s;
setExpandable( true );
- QCheckListItem *item;
- nameItem = new QCheckListItem( this, "" );
- item = new QCheckListItem( this, QObject::tr("Description: ")+pi->desc() );
- item = new QCheckListItem( this, QObject::tr("Size: ")+pi->size() );
- destItem = new QCheckListItem( this, "" );
- linkItem = new QCheckListItem( this, "" );
- statusItem = new QCheckListItem( this, "" );
- QCheckListItem *otherItem = new QCheckListItem( this, QObject::tr("other") );
- item = new QCheckListItem( otherItem, QObject::tr("Install Name: ")+pi->installName() );
+ ListViewItemOipkg *item;
+ nameItem = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute,"name" );
+ item = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute, QObject::tr("Description: ")+pi->desc() );
+ item = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute, QObject::tr("Size: ")+pi->size() );
+ destItem = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute, "dest" );
+ linkItem = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute, "link" );
+ statusItem = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute, "status" );
+ ListViewItemOipkg *otherItem = new ListViewItemOipkg( this, ListViewItemOipkg::Attribute, QObject::tr("other") );
+ item = new ListViewItemOipkg( otherItem, ListViewItemOipkg::Attribute, QObject::tr("Install Name: ")+pi->installName() );
QDict<QString> *fields = pi->getFields();
QDictIterator<QString> it( *fields );
while ( it.current() ) {
- item = new QCheckListItem( otherItem, QString(it.currentKey()+": "+*it.current()) );
+ item = new ListViewItemOipkg( otherItem, ListViewItemOipkg::Attribute, QString(it.currentKey()+": "+*it.current()) );
++it;
}
displayDetails();
if (!pm_uninstalled)
{
pm_uninstalled = new QPixmap(Resource::loadPixmap("oipkg/uninstalled"));
pm_uninstalled_old = new QPixmap(Resource::loadPixmap("oipkg/uninstalledOld"));
pm_uninstalled_old_installed_new = new QPixmap(Resource::loadPixmap("oipkg/uninstalledOldinstalledNew"));
pm_uninstalled_installed_old = new QPixmap(Resource::loadPixmap("oipkg/uninstalledInstalledOld"));
pm_installed = new QPixmap(Resource::loadPixmap("oipkg/installed"));
pm_installed_old = new QPixmap(Resource::loadPixmap("oipkg/installedOld"));
pm_install = new QPixmap(Resource::loadPixmap("oipkg/install"));
pm_uninstall = new QPixmap(Resource::loadPixmap("oipkg/uninstall"));
}
}
void PackageListItem::paintCell( QPainter *p, const QColorGroup & cg,
int column, int width, int alignment )
{
if ( !p )
return;
p->fillRect( 0, 0, width, height(),
isSelected()? cg.highlight() : cg.base() );
if ( column != 0 ) {
// The rest is text
QListViewItem::paintCell( p, cg, column, width, alignment );
return;
}
QListView *lv = listView();
if ( !lv )
return;
int marg = lv->itemMargin();
int r = marg;
QPixmap pm = statePixmap();
p->drawPixmap(marg,(height()-pm.height())/2,pm);
r += pm.width()+1;
p->translate( r, 0 );
QListViewItem::paintCell( p, cg, column, width - r, alignment );
}
void PackageListItem::paintFocus( QPainter *p, const QColorGroup & cg,
@@ -127,48 +142,98 @@ QPixmap PackageListItem::statePixmap() const
}
else
if (old) return *pm_installed_old;
else return *pm_installed;
} else { //toProcess() == true
if ( !installed )
return *pm_install;
else
return *pm_uninstall;
}
}
QString PackageListItem::key( int column, bool ascending ) const
{
if ( column == 2 ) {
QString t = text(2);
double bytes=t.toDouble();
if ( t.contains('M') ) bytes*=1024*1024;
else if ( t.contains('K') || t.contains('k') ) bytes*=1024;
if ( !ascending ) bytes=999999999-bytes;
return QString().sprintf("%09d",(int)bytes);
} else {
return QListViewItem::key(column,ascending);
}
}
void PackageListItem::setOn( bool b )
{
QCheckListItem::setOn( b );
package->toggleProcess();
package->setLink( settings->createLinks() );
displayDetails();
}
void PackageListItem::displayDetails()
{
QString sod;
sod += package->sizeUnits().isEmpty()?QString(""):QString(package->sizeUnits());
//sod += QString(package->dest().isEmpty()?"":QObject::tr(" on ")+package->dest());
sod += package->dest().isEmpty()?QString(""):QString(QObject::tr(" on ")+package->dest());
sod = sod.isEmpty()?QString(""):QString(" ("+sod+")");
setText(0, package->name()+sod );
nameItem->setText( 0, QObject::tr("Name: ")+package->name());
linkItem->setText( 0, QObject::tr("Link: ")+(package->link()?QObject::tr("Yes"):QObject::tr("No")));
destItem->setText( 0, QObject::tr("Destination: ")+package->dest() );
statusItem->setText( 0, QObject::tr("Status: ")+package->status() );
repaint();
}
+
+QPopupMenu* PackageListItem::getPopupMenu()
+{
+ popupMenu->clear();
+ destsMenu->clear();
+
+ QAction *popupAction;
+ qDebug("PackageListItem::showPopup ");
+
+ if (!package->installed()){
+ popupMenu->insertItem( QObject::tr("Install to"), destsMenu );
+ QStringList dests = settings->getDestinationNames();
+ QString ad = settings->getDestinationName();
+ for (uint i = 0; i < dests.count(); i++ )
+ {
+ popupAction = new QAction( dests[i], QString::null, 0, popupMenu, 0 );
+ popupAction->addTo( destsMenu );
+ if ( dests[i] == ad && getPackage()->toInstall() )
+ {
+ popupAction->setToggleAction( true );
+ popupAction->setOn(true);
+ }
+ }
+ connect( destsMenu, SIGNAL( activated( int ) ),
+ this, SLOT( menuAction( int ) ) );
+ popupMenu->popup( QCursor::pos() );
+ }else{
+ popupMenu->insertItem( QObject::tr("Remove"));
+ connect( popupMenu, SIGNAL( activated( int ) ),
+ this, SLOT( menuAction( int ) ) );
+ popupMenu->popup( QCursor::pos() );
+ }
+ return popupMenu;
+}
+
+void PackageListItem::menuAction( int i )
+{
+ if (package->installed()){
+ package->setDest( destsMenu->text(i) );
+ package->setLink( settings->createLinks() );
+ }
+ package->setOn();
+ displayDetails();
+}
+
+//void PackageListItem::toggleProcess()
+//{
+// package->toggleProcess() ;
+// displayDetails();
+//} \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/packagelistitem.h b/noncore/unsupported/oipkg/packagelistitem.h
index dba44f7..ca0cf17 100644
--- a/noncore/unsupported/oipkg/packagelistitem.h
+++ b/noncore/unsupported/oipkg/packagelistitem.h
@@ -1,50 +1,64 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#ifndef PK_LISTITEM_H
#define PK_LISTITEM_H
-#include "package.h"
#include <qstring.h>
-#include <qlistview.h>
+//#include <qlistview.h>
#include <qpainter.h>
#include <qpixmap.h>
#include <qdict.h>
+#include "listviewitemoipkg.h"
+#include "package.h"
#include "pksettings.h"
-class PackageListItem
-: public QCheckListItem
+class QPopupMenu;
+
+class PackageListItem : public ListViewItemOipkg
{
public:
- PackageListItem(QListViewItem*, Package*, PackageManagerSettings*);
- PackageListItem(QListView*, Package*, PackageManagerSettings*);
+ PackageListItem(ListViewItemOipkg *parent, QString name, Type ittype);
+ PackageListItem(
+ ListViewItemOipkg *parent,
+ OipkgPackage *pack,
+ PackageManagerSettings *s);
+ PackageListItem(QListView*, OipkgPackage*, PackageManagerSettings*);
+ ~PackageListItem();
void paintCell( QPainter*, const QColorGroup&, int, int, int );
void paintFocus( QPainter*, const QColorGroup&, const QRect& );
QPixmap statePixmap() const;
QString key( int, bool ) const;
- Package* getPackage() { return package; } ;
+ OipkgPackage* getPackage() { return package; } ;
QString getName() { return package->name(); } ;
bool isInstalled(){ return package->installed(); };
virtual void setOn ( bool );
void displayDetails();
private:
- void init(Package*, PackageManagerSettings*);
+ QPopupMenu *popupMenu;
+ QPopupMenu *destsMenu;
+ void init(OipkgPackage*, PackageManagerSettings*);
+ virtual QPopupMenu* getPopupMenu();
+ static QPopupMenu *_destsMenu;
QCheckListItem *nameItem;
QCheckListItem *destItem;
QCheckListItem *linkItem;
QCheckListItem *statusItem;
PackageManagerSettings *settings;
- Package *package;
+ OipkgPackage *package;
+protected slots:
+ // void toggleProcess();
+ virtual void menuAction( int );
};
#endif
diff --git a/noncore/unsupported/oipkg/packagelistlocal.cpp b/noncore/unsupported/oipkg/packagelistlocal.cpp
index b8a19253..2fe75bc 100644
--- a/noncore/unsupported/oipkg/packagelistlocal.cpp
+++ b/noncore/unsupported/oipkg/packagelistlocal.cpp
@@ -24,52 +24,52 @@ PackageListLocal::PackageListLocal()
if ( statusDir=="" || ! QFileInfo(statusDir+"/status").isFile() )
{
statusDir="/usr/lib/ipkg/";
listsDir="/usr/lib/ipkg/lists/";
cfg.writeEntry( "statusDir", statusDir );
cfg.writeEntry( "listsDir", listsDir );
}
}
PackageListLocal::PackageListLocal(PackageManagerSettings* s)
: PackageList(s)
{
PackageListLocal();
}
PackageListLocal::~PackageListLocal()
{
}
void PackageListLocal::parseStatus()
{
QStringList dests = settings->getDestinationUrls();
QStringList destnames = settings->getDestinationNames();
QStringList::Iterator name = destnames.begin();
for ( QStringList::Iterator dir = dests.begin(); dir != dests.end(); ++dir )
{
pvDebug( 2,"Status: "+*dir+statusDir+"/status");
readFileEntries( *dir+statusDir+"/status", *name );
++name;
};
}
void PackageListLocal::parseList()
{
QStringList srvs = settings->getActiveServers();
for ( QStringList::Iterator it = srvs.begin(); it != srvs.end(); ++it )
{
pvDebug( 2, "List: "+listsDir+"/"+*it);
readFileEntries( listsDir+"/"+*it );
}
}
void PackageListLocal::update()
{
pvDebug( 2, "parseStatus");
parseStatus();
- pvDebug( 2, "parseList");
+ pvDebug( 2, "parseList "+listsDir);
parseList();
pvDebug( 2, "finished parsing");
}
diff --git a/noncore/unsupported/oipkg/packagelistview.cpp b/noncore/unsupported/oipkg/packagelistview.cpp
index 0d6fa80..3c7435d 100644
--- a/noncore/unsupported/oipkg/packagelistview.cpp
+++ b/noncore/unsupported/oipkg/packagelistview.cpp
@@ -1,153 +1,118 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#include "packagelistview.h"
#include <qpopupmenu.h>
#include <qaction.h>
+#include "listviewitemoipkg.h"
#include "packagelistitem.h"
#include "pksettings.h"
PackageListView::PackageListView(QWidget *p, const char* n, PackageManagerSettings *s)
: QListView(p,n)
{
settings = s;
- popupMenu = new QPopupMenu( this );
- destsMenu = new QPopupMenu( popupMenu );
popupTimer = new QTimer( this );
setSelectionMode(QListView::NoSelection);
addColumn( tr("Package") );
setRootIsDecorated( true );
connect( popupTimer, SIGNAL(timeout()),
this, SLOT(showPopup()) );
connect( this, SIGNAL( pressed( QListViewItem* ) ),
this, SLOT( setCurrent( QListViewItem* ) ) );
connect( this, SIGNAL( clicked( QListViewItem* ) ),
this, SLOT( stopTimer( QListViewItem* ) ) );
}
//PackageListView::~PackageListView()
//{
//}
void PackageListView::setCurrent( QListViewItem* p )
{
- if ( !p ) return;
- activePackageListItem = (PackageListItem*)p;
- activePackage = activePackageListItem->getPackage();
- if (!activePackage)
- {
-// QDictIterator<QCheckListItem> it( rootItems );
-// while ( it.current() )
+ qDebug("PackageListView::setCurrent ");
+ activeItem = (ListViewItemOipkg*)p;
+
+ if ( activeItem != 0 ) popupTimer->start( 750, true );
+
+// if ( activeItem->getType() != ListViewItemOipkg::Package ){
+// qDebug("PackageListView::setCurrent !p ");
+// activePackage = 0;
+// activePackageListItem = 0;
+// qDebug("PackageListView::setCurrent returning ");
+// return;
+// };
+// activePackageListItem = (PackageListItem*)p;
+// activePackage = activePackageListItem->getPackage();
+// if (activePackage == 0 )
// {
-// if ( it.current()==p )
-// pvDebug(2,"current item");
-// ++it;
+// qDebug("PackageListView::setCurrent if (!activePackage)");
+// return;
// }
- return;
- }
- popupTimer->start( 750, true );
+
+ qDebug("PackageListView::setCurrent popupTimer->start");
}
void PackageListView::showPopup()
{
- popupMenu->clear();
- destsMenu->clear();
-
- QAction *popupAction;
- if ( !activePackage->installed() )
- {
- popupMenu->insertItem( tr("Install to"), destsMenu );
- QStringList dests = settings->getDestinationNames();
- QString ad = settings->getDestinationName();
- for (uint i = 0; i < dests.count(); i++ )
- {
- popupAction = new QAction( dests[i], QString::null, 0, this, 0 );
- popupAction->addTo( destsMenu );
- if ( dests[i] == ad && activePackage->toInstall() )
- {
- popupAction->setToggleAction( true );
- popupAction->setOn(true);
- };
- }
- connect( destsMenu, SIGNAL( activated( int ) ),
- this, SLOT( changePackageDest( int ) ) );
- }else{
- popupAction = new QAction( tr("Remove"),QString::null, 0, this, 0 );
- popupAction->addTo( popupMenu );
- connect( popupAction, SIGNAL( activated() ),
- this , SLOT( toggleProcess() ) );
- popupAction = new QAction( tr("Reinstall"),QString::null, 0, this, 0 );
- popupAction->addTo( popupMenu );
- popupAction->setEnabled( false );
- }
- popupMenu->popup( QCursor::pos() );
+ qDebug("PackageListView::showPopup");
+ QPopupMenu *popup = activeItem->getPopupMenu();
+ if (popup == 0) return;
+ popup->popup( QCursor::pos() );
+ qDebug("PackageListView::showPopup");
}
void PackageListView::stopTimer( QListViewItem* )
{
popupTimer->stop();
}
-void PackageListView::changePackageDest( int i )
-{
- activePackage->setDest( destsMenu->text(i) );
- activePackage->setOn();
- activePackage->setLink( settings->createLinks() );
- activePackageListItem->displayDetails();
-}
-
-void PackageListView::toggleProcess()
-{
- activePackage->toggleProcess() ;
- activePackageListItem->displayDetails();
-}
-
void PackageListView::display()
{
QDictIterator<PackageList> list( PackageLists );
PackageList *packlist;
- Package *pack;
+ OipkgPackage *pack;
PackageListItem *item;
- QCheckListItem *rootItem;
+ ListViewItemOipkg *rootItem;
QListViewItem* it;
QListViewItem* itdel;
while ( list.current() ) {
packlist = list.current();
rootItem = rootItems.find( list.currentKey() );
//rootItem->clear();
it=rootItem->firstChild();
while ( it )
{
itdel = it;
it = it->nextSibling();
delete itdel;
}
pack = packlist->first();
while( pack )
{
item = new PackageListItem( rootItem, pack, settings );
pack = packlist->next();
}
++list;
}
}
void PackageListView::addList( QString n, PackageList* pl)
{
PackageLists.insert(n, pl);
- QCheckListItem *item = new QCheckListItem(this,n);
+ ListViewItemOipkg *item = new ListViewItemOipkg(this,n,ListViewItemOipkg::Feed);
rootItems.insert(n, item);
}
diff --git a/noncore/unsupported/oipkg/packagelistview.h b/noncore/unsupported/oipkg/packagelistview.h
index 3c09ba8..17dcb95 100644
--- a/noncore/unsupported/oipkg/packagelistview.h
+++ b/noncore/unsupported/oipkg/packagelistview.h
@@ -1,54 +1,55 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#ifndef PACKAGELISTVIEW_H
#define PACKAGELISTVIEW_H
#include <qlistview.h>
#include <qaction.h>
#include <qdict.h>
#include <qstring.h>
#include <qtimer.h>
#include <qwidget.h>
#include <qpopupmenu.h>
+#include "listviewitemoipkg.h"
#include "packagelist.h"
#include "debug.h"
class PackageListItem;
-class Package;
+class OipkgPackage;
class PackageManagerSettings;
+//class ListViewItemOipkg;
class PackageListView : public QListView
{
Q_OBJECT
public:
PackageListView(QWidget*, const char*, PackageManagerSettings*);
void addList( QString, PackageList* );
// ~PackageListView();
QTimer *popupTimer;
private:
QDict<PackageList> PackageLists;
- QDict<QCheckListItem> rootItems;
+ QDict<ListViewItemOipkg> rootItems;
PackageManagerSettings *settings;
- Package *activePackage;
- PackageListItem *activePackageListItem;
+// OipkgPackage *activePackage;
+// PackageListItem *activePackageListItem;
+ ListViewItemOipkg *activeItem;
QPopupMenu *popupMenu;
QPopupMenu *destsMenu;
public slots:
void showPopup();
- void changePackageDest( int );
void setCurrent( QListViewItem* );
void stopTimer( QListViewItem* );
- void toggleProcess();
void display();
};
#endif
diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp
index 2ed313c..cfaadbf 100644
--- a/noncore/unsupported/oipkg/pmipkg.cpp
+++ b/noncore/unsupported/oipkg/pmipkg.cpp
@@ -69,97 +69,97 @@ bool PmIpkg::runIpkg(const QString& args, const QString& dest )
if ( installDialog && installDialog->_force_depends )
{
if (installDialog->_force_depends->isChecked())
cmd += " -force-depends ";
if (installDialog->_force_reinstall->isChecked())
cmd += " -force-reinstall ";
if (installDialog->_force_remove->isChecked())
cmd += " -force-removal-of-essential-packages ";
if (installDialog->_force_overwrite->isChecked())
cmd += " -force-overwrite ";
}
} //!args.contains("update")
out( "Starting to "+ args+"\n");
qApp->processEvents();
cmd += args;
out( "running:\n"+cmd+"\n" );
pvDebug(2,"running:"+cmd);
qApp->processEvents();
FILE *fp;
char line[130];
QString lineStr, lineStrOld;
sleep(1);
cmd +=" 2>&1";
fp = popen( (const char *) cmd, "r");
if ( fp == NULL ) {
qDebug("Could not execute '" + cmd + "'! err=%d", fp);
out("\nError while executing "+ cmd+"\n\n");
ret = false;
} else {
while ( fgets( line, sizeof line, fp) != NULL)
{
lineStr = line;
lineStr=lineStr.left(lineStr.length()-1);
//Configuring opie-oipkg...Done
if (lineStr.contains("Done")) ret = true;
if (lineStr!=lineStrOld)
out(lineStr);
lineStrOld = lineStr;
qApp->processEvents();
}
}
pclose(fp);
pvDebug(2,QString(ret?"success\n":"failure\n"));
return ret;
}
-void PmIpkg::makeLinks(Package *pack)
+void PmIpkg::makeLinks(OipkgPackage *pack)
{
pvDebug( 2, "PmIpkg::makeLinks "+ pack->name());
QString pn = pack->name();
linkPackage( pack->packageName(), pack->dest() );
}
QStringList* PmIpkg::getList( QString packFileName, QString d )
{
QString dest = settings->getDestinationUrlByName( d );
dest = dest==""?d:dest;
// if (dest == "/" ) return 0;
{
Config cfg( "oipkg", Config::User );
cfg.setGroup( "Common" );
QString statusDir = cfg.readEntry( "statusDir", "" );
}
QString packFileDir = dest+"/"+statusDir+"/info/"+packFileName+".list";
QFile f( packFileDir );
qDebug("Try to open %s", packFileDir.latin1());
if ( ! f.open(IO_ReadOnly) )
{
out( "Could not open:\n"+packFileDir );
f.close();
packFileDir = "/"+statusDir+"/info/"+packFileName+".list";
f.setName( packFileDir );
qDebug("Try to open %s", packFileDir.latin1());
if ( ! f.open(IO_ReadOnly) )
{
qDebug(" Panik! Could not open"+packFileDir);
out( "Could not open:\n"+packFileDir+"\n Panik!" );
return (QStringList*)0;
}
}
QStringList *fileList = new QStringList();
QTextStream t( &f );
while ( !t.eof() )
{
*fileList += t.readLine();
}
f.close();
return fileList;
}
void PmIpkg::linkPackage( QString packFileName, QString dest )
{
if (dest == "root" || dest == "/" ) return;
QStringList *fileList = getList( packFileName, dest );
processFileList( fileList, dest );
@@ -187,156 +187,156 @@ void PmIpkg::processLinkDir( QString file, QString dest )
QString destFile = file;
file = dest+"/"+file;
if (file == dest) return;
// if (linkOpp==createLink) out( "\ncreating links\n" );
// if (linkOpp==removeLink) out( "\nremoving links\n" );
QFileInfo fileInfo( file );
if ( fileInfo.isDir() )
{
pvDebug(4, "process dir "+file);
QDir destDir( destFile );
if (linkOpp==createLink) destDir.mkdir( destFile, true );
QDir d( file );
// d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
const QFileInfoList *list = d.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
while ( (fi=it.current()) )
{
pvDebug(4, "processLinkDir "+fi->absFilePath());
processLinkDir( fi->absFilePath(), dest );
++it;
}
} else
if ( fileInfo.isFile() )
{
const char *instFile = strdup( (file).latin1() );
const char *linkFile = strdup( (destFile).latin1());
if( linkOpp==createLink )
{
pvDebug(4, "linking: "+file+" -> "+destFile );
symlink( instFile, linkFile );
}
} else {
const char *linkFile = strdup( (destFile).latin1());
if( linkOpp==removeLink )
{
QFileInfo toRemoveLink( destFile );
if ( !QFile::exists( file ) && toRemoveLink.isSymLink() )
{
pvDebug(4,"removing "+destFile+" no "+file);
unlink( linkFile );
}
}
}
}
void PmIpkg::loadList( PackageList *pl )
{
- for( Package *pack = pl->first();pack ; (pack = pl->next()) )
+ for( OipkgPackage *pack = pl->first();pack ; (pack = pl->next()) )
{
if ( pack && (pack->name() != "") && pack)
{
if ( pack->toInstall() )
to_install.append( pack );
if ( pack->toRemove() )
to_remove.append( pack );
}
}
}
void PmIpkg::commit()
{
int sizecount = 0;
installDialog = new InstallDialog(settings,0,0,true);
installDialog->toRemoveItem->setOpen( true );
installDialog->toInstallItem->setOpen( true );
for (uint i=0; i < to_remove.count(); i++)
{
sizecount += 1;
installDialog->toRemoveItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_remove.at(i),settings) );
}
for (uint i=0; i < to_install.count(); i++)
{
sizecount += to_install.at(i)->size().toInt();
installDialog->toInstallItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_install.at(i),settings) );
}
runwindow->progress->setTotalSteps(sizecount);
qDebug("Install size %i",sizecount);
installDialog->showMaximized();
installDialog->show();
if ( installDialog->exec() )
{
doIt();
runwindow->showMaximized();
runwindow->show();
}
installDialog->close();
delete installDialog;
installDialog = 0;
out(tr("\nAll done."));
}
void PmIpkg::doIt()
{
runwindow->progress->setProgress(0);
show();
remove();
install();
}
void PmIpkg::remove()
{
if ( to_remove.count() == 0 ) return;
out(tr("Removing")+"\n"+tr("please wait")+"\n\n");
- QStringList *fileList;
+ QStringList *fileList = new QStringList;
for (uint i=0; i < to_remove.count(); i++)
{
if ( to_remove.at(i)->link() ) fileList = getList( to_remove.at(i)->name(), to_remove.at(i)->dest() );
if ( runIpkg("remove " + to_remove.at(i)->installName(), to_remove.at(i)->dest() ))
{
runwindow->progress->setProgress( 1 );
linkOpp = removeLink;
to_remove.at(i)->processed();
pvDebug(3,"link "+QString::number(i));
if ( to_remove.at(i)->link() )
processFileList( fileList, to_remove.at(i)->dest() );
//pvDebug(3,"take "+QString::number(i)+" of "+QString::number(to_remove.count()));
//if ( to_remove.at(i) ) to_remove.take( i );
out("\n");
}else{
out(tr("Error while removing ")+to_remove.at(i)->name()+"\n");
if ( to_remove.at(i)->link() )
processFileList( fileList, to_remove.at(i)->dest() );
}
if ( to_remove.at(i)->link() )
processFileList( fileList, to_remove.at(i)->dest() );
if ( to_remove.at(i)->link() )delete fileList;
}
to_remove.clear();
out("\n");
}
void PmIpkg::install()
{
if ( to_install.count() == 0 ) return;
out(tr("Installing")+"\n"+tr("please wait")+"\n");
for (uint i=0; i < to_install.count(); i++)
{
qDebug("install loop %i of %i installing %s",i,to_install.count(),to_install.at(i)->installName().latin1()); //pvDebug
if (to_install.at(i)->link())
{
// hack to have package.list
// in "dest"/usr/lib/ipkg/info/
QString rds = settings->getDestinationUrlByName("root");
QString lds = settings->getDestinationUrlByName(to_install.at(i)->dest());
QString listFile = "usr/lib/ipkg/lists/"+to_install.at(i)->name()+".list";
rds += listFile;
lds += listFile;
const char *rd = rds.latin1();
const char *ld = lds.latin1();
pvDebug(4, "linking: "+rds+" -> "+lds );
@@ -369,76 +369,76 @@ void PmIpkg::createLinks( const QString &dest )
QString url = settings->getDestinationUrlByName( dest );
url = url==""?dest:url;
processLinkDir( "/opt", url );
processLinkDir( "/usr", url );
}
void PmIpkg::removeLinks( const QString &dest )
{
pvDebug(2,"PmIpkg::removeLinks "+dest);
linkOpp=removeLink;
QString url = settings->getDestinationUrlByName( dest );
url = url==""?dest:url;
processLinkDir( "/opt", url );
processLinkDir( "/usr", url );
}
void PmIpkg::update()
{
show();
runIpkg( "update" );
}
void PmIpkg::out( QString o )
{
// runwindow->outPut->append(o);
runwindow->outPut->setText(runwindow->outPut->text()+o);
runwindow->outPut->setCursorPosition(runwindow->outPut->numLines() + 1,0,FALSE);
}
void PmIpkg::show()
{
if (!runwindow->isVisible())
{
runwindow->showMaximized();
runwindow->show();
}
runwindow->outPut->setText("");
}
void PmIpkg::installFile(const QString &fileName, const QString &dest)
{
to_install.clear();
to_remove.clear();
pvDebug( 2,"PmIpkg::installFile "+ fileName);
- Package *p = new Package(fileName,settings);
+ OipkgPackage *p = new OipkgPackage(fileName,settings);
if ( dest!="") p->setDest( dest );
to_install.append( p );
commit();
delete p;
}
void PmIpkg::removeFile(const QString &fileName, const QString &dest)
{
to_install.clear();
to_remove.clear();
pvDebug( 2,"PmIpkg::removeFile "+ fileName);
- Package *p = new Package(fileName,settings);
+ OipkgPackage *p = new OipkgPackage(fileName,settings);
if ( dest!="") p->setDest( dest );
to_remove.append( p );
commit();
delete p;
}
void PmIpkg::clearLists()
{
to_remove.clear();
to_install.clear();
}
diff --git a/noncore/unsupported/oipkg/pmipkg.h b/noncore/unsupported/oipkg/pmipkg.h
index 2f4d6ae..cb0759a 100644
--- a/noncore/unsupported/oipkg/pmipkg.h
+++ b/noncore/unsupported/oipkg/pmipkg.h
@@ -1,69 +1,69 @@
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
#ifndef PMIPKG_H
#define PMIPKG_H
#include <qobject.h>
#include <qlist.h>
#include <qstring.h>
#include <qwidget.h>
#include "pksettings.h"
#include "runwindow.h"
#include "packagelist.h"
#include "installdialog.h"
#include "debug.h"
#define createLink 0
#define removeLink 1
-class Package;
+class OipkgPackage;
class PmIpkg : public QObject
{
Q_OBJECT
public:
PmIpkg( PackageManagerSettings* , QWidget* p=0, const char * name=0, WFlags f=0 );
~PmIpkg();
int linkOpp;
void loadList( PackageList* );
void commit();
void update();
void show();
void clearLists();
public slots:
void doIt();
void install();
void remove();
void installFile(const QString &fileName, const QString &dest="");
void removeFile(const QString &fileName, const QString &dest="");
void createLinks( const QString &dest );
void removeLinks( const QString &dest );
private:
QString ipkg_cmd;
PackageManagerSettings* settings;
RunWindow *runwindow;
InstallDialog *installDialog;
- QList<Package> to_remove;
- QList<Package> to_install;
- void makeLinks(Package*);
+ QList<OipkgPackage> to_remove;
+ QList<OipkgPackage> to_install;
+ void makeLinks(OipkgPackage*);
void linkPackage( QString, QString );
void processLinkDir( QString , QString );
bool runIpkg(const QString& args, const QString& dest="" );
void out( QString );
QStringList* getList( QString, QString );
void processFileList( QStringList*, QString );
};
#endif