summaryrefslogtreecommitdiff
authortille <tille>2002-04-29 22:45:35 (UTC)
committer tille <tille>2002-04-29 22:45:35 (UTC)
commitb794af4c50efffe239c94e5a015e90565ff991c3 (patch) (side-by-side diff)
treedd4e20851eba8052a07396b57388f9216f85ae7f
parente4d0908ec054b71a9b97e9c35efbd5a697d0b58d (diff)
downloadopie-b794af4c50efffe239c94e5a015e90565ff991c3.zip
opie-b794af4c50efffe239c94e5a015e90565ff991c3.tar.gz
opie-b794af4c50efffe239c94e5a015e90565ff991c3.tar.bz2
removes links again
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/TODO4
-rw-r--r--noncore/unsupported/oipkg/debug.h2
-rw-r--r--noncore/unsupported/oipkg/mainwindow.cpp165
-rw-r--r--noncore/unsupported/oipkg/mainwindow.h12
-rw-r--r--noncore/unsupported/oipkg/oipkg.pro2
-rw-r--r--noncore/unsupported/oipkg/package.cpp89
-rw-r--r--noncore/unsupported/oipkg/package.h6
-rw-r--r--noncore/unsupported/oipkg/packagelistitem.cpp33
-rw-r--r--noncore/unsupported/oipkg/packagelistitem.h1
-rw-r--r--noncore/unsupported/oipkg/packagelistview.cpp38
-rw-r--r--noncore/unsupported/oipkg/packagelistview.h2
-rw-r--r--noncore/unsupported/oipkg/pkdesc.ui96
-rw-r--r--noncore/unsupported/oipkg/pksettings.cpp57
-rw-r--r--noncore/unsupported/oipkg/pksettings.h4
-rw-r--r--noncore/unsupported/oipkg/pksettingsbase.ui23
-rw-r--r--noncore/unsupported/oipkg/pmipkg.cpp284
-rw-r--r--noncore/unsupported/oipkg/pmipkg.h30
-rw-r--r--noncore/unsupported/oipkg/settings.cpp5
-rw-r--r--noncore/unsupported/oipkg/settings.h34
-rw-r--r--noncore/unsupported/oipkg/utils.cpp27
-rw-r--r--noncore/unsupported/oipkg/utils.h18
21 files changed, 545 insertions, 387 deletions
diff --git a/noncore/unsupported/oipkg/TODO b/noncore/unsupported/oipkg/TODO
index 3fc84e5..790766c 100644
--- a/noncore/unsupported/oipkg/TODO
+++ b/noncore/unsupported/oipkg/TODO
@@ -1,11 +1,9 @@
-* setDocument function
* Settings Class
* tr() ;)
* Dialog to display ipkg output live
* parse "to install" and "to remove" from status
-* install local file
+* install local file dialog
* qcop
* error handling
* manage links
* dependency checking
-* ipkg options in runwindow \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/debug.h b/noncore/unsupported/oipkg/debug.h
index 973d96c..206dea5 100644
--- a/noncore/unsupported/oipkg/debug.h
+++ b/noncore/unsupported/oipkg/debug.h
@@ -1,21 +1,21 @@
#ifndef _DEBUG_H_
#define _DEBUG_H_
#include <stdio.h>
extern int debugLevel;
#define HACK
#define NEWLAYOUT
#define pvDebug(I, S) \
if ( debugLevel < 3 ) \
{ \
if ( I <= debugLevel ) qDebug(S);\
}else{\
if ( I <= debugLevel ) \
- qDebug("# %s \t\t(Level: %i)\n",QString(S).latin1(),I);\
+ qDebug("#%s:%i: %s \t\t(Level: %i)",__FILE__,__LINE__,QString(S).latin1(),I);\
}
#endif \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/mainwindow.cpp b/noncore/unsupported/oipkg/mainwindow.cpp
index c95f482..ca1e5e8 100644
--- a/noncore/unsupported/oipkg/mainwindow.cpp
+++ b/noncore/unsupported/oipkg/mainwindow.cpp
@@ -1,258 +1,277 @@
// adadpted form qpe/qipkg
#include "mainwindow.h"
#include <qpe/qpemenubar.h>
#include <qpe/qpemessagebox.h>
#include <qpe/resource.h>
+#include <qpe/config.h>
#include <qpe/qpetoolbar.h>
#include <qpe/qcopenvelope_qws.h>
#include <qaction.h>
#include <qmessagebox.h>
#include <qpopupmenu.h>
#include <qtoolbutton.h>
#include <qstring.h>
#include <qlabel.h>
#include <qfile.h>
#include <qlistview.h>
#include <qtextview.h>
+#include <qcheckbox.h>
#include <qlineedit.h>
#include <qtabwidget.h>
#include <qcombobox.h>
#include <qmessagebox.h>
#include <qlayout.h>
#include "pksettingsbase.h"
+#include "utils.h"
#include "packagelistitem.h"
MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
QMainWindow( parent, name, f )
{
+ setCaption( tr("Package Manager") );
settings = new PackageManagerSettings(this,0,TRUE);
listViewPackages = new PackageListView( this,"listViewPackages",settings );
- ipkg = new PmIpkg( settings, this );
-
setCentralWidget( listViewPackages );
- setCaption( tr("Package Manager") );
// wait = new QMessageBox(tr("oipkg"),tr("Please wait")//,QMessageBox::Information,QMessageBox::NoButton,QMessageBox::NoButton,QMessageBox::NoButton);
- wait = new QMessageBox(this);
- wait->setText(tr("Please wait"));
-
- channel = new QCopChannel( "QPE/Application/oipkg", this );
- connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
- this, SLOT(receive(const QCString&, const QByteArray&)) );
-
- makeMenu();
-
- connect( section, SIGNAL( activated(int) ),
- this, SLOT( sectionChanged() ) );
- connect( subsection, SIGNAL(activated(int) ),
- this, SLOT( subSectionChanged() ) );
-
+// wait = new QMessageBox(this);
+// wait->setText(tr("Please wait"));
ipkg = new PmIpkg( settings, this );
packageList.setSettings( settings );
- getList();
- setSections();
- setSubSections();
+ packageList.update();
+ makeMenu();
+ makeChannel();
+ //opie is hardcoded default ;)
+ for (int i=0;i<section->count();i++)
+ if (section->text(i)=="opie")
+ section->setCurrentItem(i);
+ sectionChanged();
+
+ connect( section, SIGNAL(activated(int)), SLOT(sectionChanged()) );
+ connect( subsection, SIGNAL(activated(int)), SLOT(subSectionChanged()) );
displayList();
}
void MainWindow::makeMenu()
{
QPEToolBar *toolBar = new QPEToolBar( this );
QPEMenuBar *menuBar = new QPEMenuBar( toolBar );
QPopupMenu *srvMenu = new QPopupMenu( menuBar );
QPopupMenu *viewMenu = new QPopupMenu( menuBar );
QPopupMenu *cfgMenu = new QPopupMenu( menuBar );
// QPopupMenu *sectMenu = new QPopupMenu( menuBar );
setToolBarsMovable( false );
toolBar->setHorizontalStretchable( true );
menuBar->insertItem( tr( "Package" ), srvMenu );
menuBar->insertItem( tr( "View" ), viewMenu );
menuBar->insertItem( tr( "Settings" ), cfgMenu );
// menuBar->insertItem( tr( "Sections" ), sectMenu );
QLabel *spacer = new QLabel( "", toolBar );
spacer->setBackgroundColor( toolBar->backgroundColor() );
toolBar->setStretchableWidget( spacer );
runAction = new QAction( tr( "Apply" ),
Resource::loadPixmap( "oipkg/install" ),
QString::null, 0, this, 0 );
connect( runAction, SIGNAL( activated() ),
this, SLOT( runIpkg() ) );
runAction->addTo( toolBar );
runAction->addTo( srvMenu );
srvMenu->insertSeparator ();
updateAction = new QAction( tr( "Update" ),
Resource::loadIconSet( "oipkg/update" ),
QString::null, 0, this, 0 );
connect( updateAction, SIGNAL( activated() ),
this , SLOT( updateList() ) );
updateAction->addTo( toolBar );
updateAction->addTo( srvMenu );
-// would we use for find
-// detailsAction = new QAction( tr( "Details" ),
+// could we use for find
+// detailsAction = new QAction( tr( "Find" ),
// Resource::loadIconSet( "find" ),
// QString::null, 0, this, 0 );
// connect( detailsAction, SIGNAL( activated() ),
-// this , SLOT( showDetails() ) );
+// this , SLOT( showFind() ) );
// detailsAction->addTo( toolBar );
-// detailsAction->addTo( srvMenu );
QAction *cfgact;
cfgact = new QAction( tr( "Setups" ),
- // Resource::loadIconSet( "" ),
QString::null, 0, this, 0 );
connect( cfgact, SIGNAL( activated() ),
SLOT( showSettings() ) );
cfgact->addTo( cfgMenu );
cfgact = new QAction( tr( "Servers" ),
- // Resource::loadIconSet( "" ),
QString::null, 0, this, 0 );
connect( cfgact, SIGNAL( activated() ),
SLOT( showSettingsSrv() ) );
cfgact->addTo( cfgMenu );
cfgact = new QAction( tr( "Destinations" ),
- // Resource::loadIconSet( "" ),
QString::null, 0, this, 0 );
connect( cfgact, SIGNAL( activated() ),
SLOT( showSettingsDst() ) );
cfgact->addTo( cfgMenu );
- QAction *a;
+ QAction *a;
sectionBar = new QPEToolBar( this );
addToolBar( sectionBar, "Section", QMainWindow::Top, TRUE );
sectionBar->setHorizontalStretchable( true );
QLabel *label = new QLabel( tr("Section: "), sectionBar );
label->setBackgroundColor( sectionBar->backgroundColor() );
sectionBar->setStretchableWidget( label );
section = new QComboBox( false, sectionBar );
-// section->setBackgroundMode( PaletteBackground );
label = new QLabel( " / ", sectionBar );
label->setBackgroundColor( sectionBar->backgroundColor() );
subsection = new QComboBox( false, sectionBar );
-
a = new QAction( tr( "Close Section" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( sectionClose() ) );
a->addTo( sectionBar );
+ setSections();
+ setSubSections();
+
sectionAction = new QAction( tr( "Sections" ), QString::null, 0, this, 0 );
connect( sectionAction, SIGNAL( toggled(bool) ), this, SLOT( sectionShow(bool) ) );
sectionAction->setToggleAction( true );
- sectionAction->setOn( true );
sectionAction->addTo( viewMenu );
findBar = new QPEToolBar(this);
addToolBar( findBar, "Search", QMainWindow::Top, TRUE );
label = new QLabel( tr("Filter: "), findBar );
label->setBackgroundColor( findBar->backgroundColor() );
findBar->setHorizontalStretchable( TRUE );
findEdit = new QLineEdit( findBar, "findEdit" );
findBar->setStretchableWidget( findEdit );
connect( findEdit, SIGNAL( textChanged( const QString & ) ),
this, SLOT( displayList() ) );
+ a = new QAction( tr( "Clear Find" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), findEdit, SLOT( clear() ) );
+ a->addTo( findBar );
a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) );
a->addTo( findBar );
findAction = new QAction( tr( "Find" ), QString::null, 0, this, 0 );
connect( findAction, SIGNAL( toggled(bool) ), this, SLOT( findShow(bool) ) );
findAction->setToggleAction( true );
- findAction->setOn( true );
findAction->addTo( viewMenu );
- #ifdef NEW
+ destBar = new QPEToolBar(this);
+ addToolBar( destBar, "Destination", QMainWindow::Top, TRUE );
+ label = new QLabel( tr("Destination: "), destBar );
+ label->setBackgroundColor( destBar->backgroundColor() );
+ destBar->setHorizontalStretchable( TRUE );
+ destination = new QComboBox( false, destBar );
+ destination->insertStringList( settings->getDestinationNames() );
+ setComboName(destination,settings->getDestinationName());
+// connect( destination, SIGNAL(activated(int)),
+// SLOT(activeDestinationChange(int)) );
+ spacer = new QLabel( " ", destBar );
+ spacer->setBackgroundColor( destBar->backgroundColor() );
+ CheckBoxLink = new QCheckBox( tr("Link"), destBar);
+ CheckBoxLink->setBackgroundColor( destBar->backgroundColor() );
+ CheckBoxLink->setChecked( settings->createLinks() );
+// connect( CheckBoxLink, SIGNAL(toggled(bool)),
+// settings, SLOT(linkEnabled(bool)) );
+ destAction = new QAction( tr( "Destinations" ), QString::null, 0, this, 0 );
+ connect( destAction, SIGNAL( toggled(bool) ), SLOT( destShow(bool) ) );
+ a = new QAction( tr( "Close Destinations" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), SLOT( destClose() ) );
+ a->addTo( destBar );
+ destBar->setStretchableWidget( CheckBoxLink );
+ destAction->setToggleAction( true );
+ // destAction->addTo( viewMenu );
+
+ // configure the menus
Config cfg( "oipkg", Config::User );
- cfg.setGroup( "Setting_" + QString::number( setting ) );
- CheckBoxLink->setChecked( cfg.readBoolEntry( "link", false ) );
- findShow(bool b)
- sectionShow(bool b)
- #endif
+ cfg.setGroup( "gui" );
+
+ findShow( cfg.readBoolEntry( "findBar", true ) );
+ sectionShow( cfg.readBoolEntry( "sectionBar", true ) );
+ destShow( cfg.readBoolEntry( "destBar", false ) );
}
MainWindow::~MainWindow()
{
+ Config cfg( "oipkg", Config::User );
+ cfg.setGroup( "gui" );
+ cfg.writeEntry( "findBar", !findBar->isHidden() );
+ cfg.writeEntry( "sectionBar", !sectionBar->isHidden() );
+ cfg.writeEntry( "destBar", !destBar->isHidden() );
+
}
void MainWindow::runIpkg()
{
+ packageList.allPackages();
ipkg->commit( packageList );
// ##### If we looked in the list of files, we could send out accurate
// ##### messages. But we don't bother yet, and just do an "all".
QCopEnvelope e("QPE/System", "linkChanged(QString)");
QString lf = QString::null;
e << lf;
displayList();
}
void MainWindow::updateList()
{
- wait->show();
+// wait->show();
QTimer *t = new QTimer( this );
connect( t, SIGNAL(timeout()), SLOT( rotateUpdateIcon() ) );
t->start( 0, false );
packageList.clear();
ipkg->update();
- getList();
- t->stop();
- wait->hide();
-
-}
-
-void MainWindow::getList()
-{
- wait->show();
packageList.update();
- displayList();
- wait->hide();
+ t->stop();
+// wait->hide();
}
void MainWindow::filterList()
{
- wait->show();
+// wait->show();
QString f = "";
if ( findAction->isOn() ) f = findEdit->text();
packageList.filterPackages( f );
- wait->hide();
+// wait->hide();
}
void MainWindow::displayList()
{
- wait->hide();
+// wait->hide();
filterList();
listViewPackages->clear();
Package *pack = packageList.first();
while( pack )
{
if ( pack && (pack->name() != "") )
listViewPackages->insertItem( new PackageListItem( listViewPackages, pack, settings ) );
pack = packageList.next();
}
}
void MainWindow::sectionChanged()
{
disconnect( section, SIGNAL( activated(int) ),
this, SLOT( sectionChanged() ) );
disconnect( subsection, SIGNAL(activated(int) ),
this, SLOT( subSectionChanged() ) );
subsection->clear();
packageList.setSection( section->currentText() );
setSubSections();
connect( section, SIGNAL( activated(int) ),
this, SLOT( sectionChanged() ) );
connect( subsection, SIGNAL(activated(int) ),
this, SLOT( subSectionChanged() ) );
@@ -305,67 +324,99 @@ void MainWindow::showSettingsDst()
void MainWindow::sectionShow(bool b)
{
if (b) sectionBar->show();
else sectionBar->hide();
sectionAction->setOn( b );
}
void MainWindow::sectionClose()
{
sectionAction->setOn( false );
}
void MainWindow::findShow(bool b)
{
if (b) findBar->show();
else findBar->hide();
findAction->setOn( b );
}
void MainWindow::findClose()
{
findAction->setOn( false );
}
+void MainWindow::destShow(bool b)
+{
+ if (b) destBar->show();
+ else destBar->hide();
+ destAction->setOn( b );
+}
+
+void MainWindow::destClose()
+{
+ destAction->setOn( false );
+}
+
void MainWindow::rotateUpdateIcon()
{
pvDebug(2, "MainWindow::rotateUpdateIcon");
if ( updateIcon )
updateAction->setIconSet( Resource::loadIconSet( "oipkg/update" ) );
else
updateAction->setIconSet( Resource::loadIconSet( "oipkg/update2" ) );
updateIcon = !updateIcon;
}
void MainWindow::setDocument(const QString &fileName)
{
installFile(fileName);
// ##### If we looked in the list of files, we could send out accurate
// ##### messages. But we don't bother yet, and just do an "all".
QCopEnvelope e("QPE/System", "linkChanged(QString)");
QString lf = QString::null;
e << lf;
displayList();
}
void MainWindow::installFile(const QString &fileName)
{
pvDebug(3, "MainWindow::installFile "+fileName);
if ( !QFile::exists( fileName ) ) return;
ipkg->installFile( fileName );
// ##### If we looked in the list of files, we could send out accurate
// ##### messages. But we don't bother yet, and just do an "all".
QCopEnvelope e("QPE/System", "linkChanged(QString)");
QString lf = QString::null;
e << lf;
displayList();
}
+void MainWindow::makeChannel()
+{
+ channel = new QCopChannel( "QPE/Application/oipkg", this );
+ connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
+ this, SLOT(receive(const QCString&, const QByteArray&)) );
+}
+
+
+
void MainWindow::receive(const QCString &msg, const QByteArray &arg)
{
- pvDebug(3, "QCop "+msg);
+ pvDebug(3, "QCop "+msg+" "+QCString(arg));
if ( msg == "installFile(QString)" )
{
- installFile( QString(arg) );
- }
-} \ No newline at end of file
+ ipkg->installFile( QString(arg) );
+ }else if( msg == "removeFile(QString)" )
+ {
+ ipkg->removeFile( QString(arg) );
+ }else if( msg == "createLinks(QString)" )
+ {
+ ipkg->createLinks( QString(arg) );
+ }else if( msg == "removeLinks(QString)" )
+ {
+ ipkg->removeLinks( QString(arg) );
+ }else{
+ pvDebug(2,"Huh what do ya want")
+ }
+}
diff --git a/noncore/unsupported/oipkg/mainwindow.h b/noncore/unsupported/oipkg/mainwindow.h
index a713d00..7615b09 100644
--- a/noncore/unsupported/oipkg/mainwindow.h
+++ b/noncore/unsupported/oipkg/mainwindow.h
@@ -1,78 +1,84 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <qmainwindow.h>
#include <qaction.h>
#include <qtimer.h>
#include <qpopupmenu.h>
#include "packagelist.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 getList();
void updateList();
void displayList();
void subSectionChanged();
void sectionChanged();
void showSettings();
void showSettingsSrv();
void showSettingsDst();
public slots:
void sectionClose();
void sectionShow(bool);
void findClose();
void findShow(bool);
+ void destClose();
+ void destShow(bool);
void filterList();
void receive (const QCString &, const QByteArray &);
void setDocument (const QString &);
private:
void makeMenu();
void setSections();
void setSubSections();
void installFile(const QString &);
bool updateIcon;
PmIpkg* ipkg;
PackageManagerSettings *settings;
PackageList packageList;
QAction *runAction;
- QAction *detailsAction;
QAction *updateAction;
QAction *findAction;
QAction *sectionAction;
+ QAction *destAction;
PackageListView *listViewPackages;
QPEToolBar *findBar;
QLineEdit *findEdit;
QPEToolBar *sectionBar;
QComboBox *section;
QComboBox *subsection;
- QMessageBox *wait;
+ QPEToolBar *destBar;
+ QComboBox *destination;
+ QCheckBox* CheckBoxLink;
+// QMessageBox *wait;
private slots:
void rotateUpdateIcon();
};
#endif
diff --git a/noncore/unsupported/oipkg/oipkg.pro b/noncore/unsupported/oipkg/oipkg.pro
index 1f7a70d..c5d3b3d 100644
--- a/noncore/unsupported/oipkg/oipkg.pro
+++ b/noncore/unsupported/oipkg/oipkg.pro
@@ -1,26 +1,28 @@
DESTDIR = $(OPIEDIR)/bin
TEMPLATE = app
#CONFIG = qt warn_on release
CONFIG = qt warn_on debug
HEADERS = mainwindow.h \
pksettings.h \
pmipkg.h \
+ utils.h \
packagelistitem.h \
packagelist.h \
packagelistview.h \
package.h
SOURCES = main.cpp \
mainwindow.cpp \
+ utils.cpp \
packagelistview.cpp \
pksettings.cpp \
pmipkg.cpp \
packagelistitem.cpp \
packagelist.cpp \
package.cpp
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/ioclude
LIBS += -lqpe
INTERFACES = runwindow.ui \
pksettingsbase.ui
TARGET = oipkg
diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp
index 5f0e5fa..0499e19 100644
--- a/noncore/unsupported/oipkg/package.cpp
+++ b/noncore/unsupported/oipkg/package.cpp
@@ -1,38 +1,38 @@
#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()
-{
-}
+//Package::~Package()
+//{
+//}
Package::Package( PackageManagerSettings *s )
{
init(s);
}
void Package::init( PackageManagerSettings *s )
{
settings = s;
_size = "";
_section = "";
_subsection = "";
_shortDesc = "";
_desc = "";
_name = "";
_toProcess = false;
_status = "";
_dest = settings->getDestinationName();
_link = settings->createLinks();
}
Package::Package( QStringList pack, PackageManagerSettings *s )
{
init(s);
@@ -40,140 +40,147 @@ Package::Package( QStringList pack, PackageManagerSettings *s )
}
Package::Package( QString n, PackageManagerSettings *s )
{
init(s);
if ( !QFile::exists( n ) )
{
_name = QString( n );
}else{
parseIpkgFile( n );
_toProcess = true;
_packageName = QString( n );
}
}
Package::Package( Package *pi )
{
init(pi->settings);
copyValues( pi );
}
void Package::setValue( QString n, QString t )
{
- if ( n == "Status" && installed() ) return;
if ( n == "Package" )
- {
+ {
_name = QString( t );
- }
- if ( n == "Installed-Size" )
- {
+ }else if ( n == "Installed-Size" )
+ {
_size = t;
- }
- if ( n == "Priority")
- {
+ }else if ( n == "Priority")
+ {
- }
- if ( n == "Section")
- {
+ }else if ( n == "Section")
+ {
setSection( t );
- }
- if ( n == "Maintainer")
- {
+ }else if ( n == "Maintainer")
+ {
- }
- if ( n == "Architecture")
- {
+ }else if ( n == "Architecture")
+ {
- }
- if ( n == "Version")
- {
+ }else if ( n == "Version")
+ {
- }
- if ( n == "Pre-Depends")
- {
+ }else if ( n == "Pre-Depends")
+ {
- }
- if ( n == "Depends")
- {
+ }else if ( n == "Depends")
+ {
- }else if ( n == "Filename")
- {
+ }else if ( n == "Filename")
+ {
- }else if ( n == "Size")
+ }else if ( n == "Size")
{
-
+
}else if ( n == "MD5Sum")
- {
+ {
- }
+ }
if ( n == "Description")
- {
+ {
setDesc( t );
- }
+ }
if ( n == "Status")
- {
+ {
if ( installed() ) return;
_status = t;
- }
+ }
if ( t == "Essential")
- {
+ {
- }
+ }
};
QString Package::name()
{
return _name;
}
bool Package::installed()
{
return _status.contains("installed");
}
void Package::setDesc( QString s )
{
_desc = s;
_shortDesc = s.left( s.find("\n") );
}
QString Package::desc()
{
return _desc;
}
QString Package::shortDesc()
{
return _shortDesc;
}
QString Package::size()
{
return _size;
}
+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;
}
diff --git a/noncore/unsupported/oipkg/package.h b/noncore/unsupported/oipkg/package.h
index 31b0010..49bb3bf 100644
--- a/noncore/unsupported/oipkg/package.h
+++ b/noncore/unsupported/oipkg/package.h
@@ -1,70 +1,70 @@
#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
{
- // Q_OBJECT
+// Q_OBJECT
public:
Package(PackageManagerSettings *);
- ~Package();
+ // ~Package();
Package( QStringList, PackageManagerSettings * );
Package( QString, PackageManagerSettings * );
Package( Package* );
void setValue( QString, QString );
void copyValues( Package* );
QString name() ;
bool installed();
void setDesc( QString );
QString shortDesc();
QString desc();
QString size();
+ QString sizeUnits();
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);
void parseIpkgFile( QString );;
public slots:
- /** No descriptions */
QString getPackageName();
void toggleProcess();
private:
PackageManagerSettings *settings;
QString _packageName;
QString _name;
bool _toProcess;
bool _link;
QString _status;
QString _size;
QString _section;
QString _subsection;
QString _shortDesc;
QString _desc;
QString _dest;
void parsePackage( QStringList );
void init(PackageManagerSettings *);
};
#endif
diff --git a/noncore/unsupported/oipkg/packagelistitem.cpp b/noncore/unsupported/oipkg/packagelistitem.cpp
index 149ba35..0c7c928 100644
--- a/noncore/unsupported/oipkg/packagelistitem.cpp
+++ b/noncore/unsupported/oipkg/packagelistitem.cpp
@@ -1,72 +1,57 @@
#include "packagelistitem.h"
#include <qpe/resource.h>
#include <qobject.h>
#include "debug.h"
static QPixmap *pm_uninstalled=0;
static QPixmap *pm_installed=0;
static QPixmap *pm_uninstall=0;
static QPixmap *pm_install=0;
PackageListItem::PackageListItem(QListView* lv, Package *pi, PackageManagerSettings *s)
: QCheckListItem(lv,pi->name(),CheckBox)
{
package = pi;
settings = s;
setExpandable( true );
QCheckListItem *item;
-#ifndef NEWLAYOUT
- item = new QCheckListItem( this, QObject::tr("Name") );
- item->setText(1,pi->name());
- item = new QCheckListItem( this, QObject::tr("Description") );
- item->setText(1,pi->desc()+"\ntest multi\nline");
- item = new QCheckListItem( this, QObject::tr("Size") );
- item->setText(1,pi->size());
- item = new QCheckListItem( this, QObject::tr("Destination") );
- item->setText(1,pi->getDest());
-#endif
-#ifdef NEWLAYOUT
- item = new QCheckListItem( this, QObject::tr("Name: ")+pi->name() );
+ 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, "" );
displayDetails();
-#endif
- if (!pm_uninstalled) {
+ if (!pm_uninstalled)
+ {
pm_uninstalled = new QPixmap(Resource::loadPixmap("oipkg/uninstalled"));
pm_installed = new QPixmap(Resource::loadPixmap("oipkg/installed"));
pm_install = new QPixmap(Resource::loadPixmap("oipkg/install"));
pm_uninstall = new QPixmap(Resource::loadPixmap("oipkg/uninstall"));
}
-#ifndef NEWLAYOUT
- setText(1, package->shortDesc() );
- setText(2, package->size() );
-#endif
}
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();
@@ -99,41 +84,39 @@ QPixmap PackageListItem::statePixmap() const
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();
-// if ( b )
-// {
-// if ((package->dest()).isEmpty)
-// package->setDest( settings->getDestinationName() );
-// }else{
-// package->setDest( QObject::tr("not installed"));
-// }
package->setLink( settings->createLinks() );
displayDetails();
}
void PackageListItem::displayDetails()
{
+ QString sod = " ("+package->sizeUnits();
+ sod += package->dest().isEmpty()?QString(""):QString(QObject::tr(" on ")+package->dest());
+ sod += ")";
+ setText(0, package->name()+sod );
+ nameItem->setText( 0, QObject::tr("Name: ")+package->name());
linkItem->setText( 0, QObject::tr("Link: ")+QString(package->link()?QObject::tr("Yes"):QObject::tr("No")) );
destItem->setText( 0, QObject::tr("Destination: ")+package->dest() );
repaint();
}
diff --git a/noncore/unsupported/oipkg/packagelistitem.h b/noncore/unsupported/oipkg/packagelistitem.h
index f695432..54d9f9e 100644
--- a/noncore/unsupported/oipkg/packagelistitem.h
+++ b/noncore/unsupported/oipkg/packagelistitem.h
@@ -6,32 +6,33 @@
#include <qstring.h>
#include <qlistview.h>
#include <qpainter.h>
#include <qpixmap.h>
#include <qdict.h>
#include "pksettings.h"
class PackageListItem
: public QCheckListItem
{
public:
PackageListItem(QListView*, Package*, PackageManagerSettings*);
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; } ;
QString getName() { return package->name(); } ;
bool isInstalled(){ return package->installed(); };
virtual void setOn ( bool );
void displayDetails();
private:
+ QCheckListItem *nameItem;
QCheckListItem *destItem;
QCheckListItem *linkItem;
PackageManagerSettings *settings;
Package *package;
};
#endif
diff --git a/noncore/unsupported/oipkg/packagelistview.cpp b/noncore/unsupported/oipkg/packagelistview.cpp
index 693ea6a..2915ac6 100644
--- a/noncore/unsupported/oipkg/packagelistview.cpp
+++ b/noncore/unsupported/oipkg/packagelistview.cpp
@@ -31,61 +31,77 @@ PackageListView::PackageListView(QWidget *p, const char* n, PackageManagerSettin
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();
- pvDebug(5, "start timer");
+ if (!activePackage) return;
popupTimer->start( 750, true );
}
void PackageListView::showPopup()
{
popupMenu->clear();
destsMenu->clear();
QAction *popupAction;
- popupMenu->insertItem( QObject::tr("Install to"), destsMenu );
- QStringList dests = settings->getDestinationNames();
- for (uint i = 0; i < dests.count(); i++ )
- {
- popupAction = new QAction( dests[i], QString::null, 0, this, 0 );
- popupAction->addTo( destsMenu );
- }
- connect( destsMenu, SIGNAL( activated( int ) ),
- this, SLOT( changePackageDest( int ) ) );
+ if ( !activePackage->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, 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{
+// popupActcat setOn( activePackage->toProcess() );
+ }
popupMenu->popup( QCursor::pos() );
}
void PackageListView::stopTimer( QListViewItem* )
{
- pvDebug( 5, "stop timer" );
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();
+}
diff --git a/noncore/unsupported/oipkg/packagelistview.h b/noncore/unsupported/oipkg/packagelistview.h
index 15e200b..a3db0d0 100644
--- a/noncore/unsupported/oipkg/packagelistview.h
+++ b/noncore/unsupported/oipkg/packagelistview.h
@@ -27,27 +27,29 @@
class PackageListItem;
class Package;
class PackageManagerSettings;
class PackageListView : public QListView
{
Q_OBJECT
public:
PackageListView(QWidget*, const char*, PackageManagerSettings*);
// ~PackageListView();
QTimer *popupTimer;
private:
PackageManagerSettings *settings;
Package *activePackage;
PackageListItem *activePackageListItem;
QPopupMenu *popupMenu;
QPopupMenu *destsMenu;
public slots:
void showPopup();
void changePackageDest( int );
void setCurrent( QListViewItem* );
void stopTimer( QListViewItem* );
+ /** No descriptions */
+ void toggleProcess();
};
#endif
diff --git a/noncore/unsupported/oipkg/pkdesc.ui b/noncore/unsupported/oipkg/pkdesc.ui
deleted file mode 100644
index 494d3d6..0000000
--- a/noncore/unsupported/oipkg/pkdesc.ui
+++ b/dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE UI><UI>
-<class>PackageDetails</class>
-<widget>
- <class>QDialog</class>
- <property stdset="1">
- <name>name</name>
- <cstring>Form7</cstring>
- </property>
- <property stdset="1">
- <name>geometry</name>
- <rect>
- <x>0</x>
- <y>0</y>
- <width>221</width>
- <height>291</height>
- </rect>
- </property>
- <property stdset="1">
- <name>caption</name>
- <string>(pkgname)</string>
- </property>
- <property>
- <name>layoutMargin</name>
- </property>
- <property>
- <name>layoutSpacing</name>
- </property>
- <vbox>
- <property stdset="1">
- <name>margin</name>
- <number>6</number>
- </property>
- <property stdset="1">
- <name>spacing</name>
- <number>3</number>
- </property>
- <widget>
- <class>QTextView</class>
- <property stdset="1">
- <name>name</name>
- <cstring>description</cstring>
- </property>
- </widget>
- <widget>
- <class>QLayoutWidget</class>
- <property stdset="1">
- <name>name</name>
- <cstring>Layout4</cstring>
- </property>
- <hbox>
- <property stdset="1">
- <name>margin</name>
- <number>0</number>
- </property>
- <property stdset="1">
- <name>spacing</name>
- <number>6</number>
- </property>
- <widget>
- <class>QToolButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>install</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Install</string>
- </property>
- </widget>
- <widget>
- <class>QToolButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>remove</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Remove</string>
- </property>
- </widget>
- <widget>
- <class>QToolButton</class>
- <property stdset="1">
- <name>name</name>
- <cstring>ignore</cstring>
- </property>
- <property stdset="1">
- <name>text</name>
- <string>Ignore</string>
- </property>
- </widget>
- </hbox>
- </widget>
- </vbox>
-</widget>
-</UI>
diff --git a/noncore/unsupported/oipkg/pksettings.cpp b/noncore/unsupported/oipkg/pksettings.cpp
index be01837..6c8dc2a 100644
--- a/noncore/unsupported/oipkg/pksettings.cpp
+++ b/noncore/unsupported/oipkg/pksettings.cpp
@@ -10,210 +10,224 @@
#include <qprogressbar.h>
#include <qcombobox.h>
#include <qdict.h>
#include <qfile.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlistview.h>
#include <qlistbox.h>
#include <qcheckbox.h>
#include <qmessagebox.h>
#include <qpainter.h>
#include <qpixmap.h>
#include <qregexp.h>
#include <qstring.h>
#include <qobject.h>
#include <qtextstream.h>
#include <qtextview.h>
#include <qtoolbutton.h>
#include <qtabwidget.h>
#include <stdlib.h>
#include <unistd.h>
#include "debug.h"
+//#include "utils.h"
PackageManagerSettings::PackageManagerSettings( QWidget* parent, const char* name, WFlags fl )
: PackageManagerSettingsBase( parent, name, fl )
{
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();
}
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;
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);
}
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(destinations->text(editedserver));
destinationurl->setText(*destinationurlDic[editedserver]);
disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) );
destinations->removeItem(editeddestination);
activeDestination->removeItem(editeddestination);
activeLinkDestination->removeItem(editeddestination);
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 );
+ changed = true;
connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
+ changed = 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;
}
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";
for (int i=0; i<(int)activeServers->count(); i++)
{
QString url = serverurlDic[i] ? *serverurlDic[i] : QString("???");
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();
}
@@ -244,115 +258,114 @@ void PackageManagerSettings::removeInstallationSetting()
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()
{
- if ( ! changed ) return ;
{
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", false ) );
+ 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 );
- }
+ {
+ if ( activeDestination->text( i ) == dest )
+ activeDestination->setCurrentItem( i );
+ if ( activeLinkDestination->text( i ) == linkdest )
+ activeLinkDestination->setCurrentItem( i );
+ }
}
void PackageManagerSettings::writeCurrentInstallationSetting()
{
Config cfg( "oipkg", Config::User );
- changed = false;
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();
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]));
@@ -403,109 +416,127 @@ bool PackageManagerSettings::readIpkgConfig(const QString& conffile)
}
}
if ( ipkg_old ) {
servers->setSelectionMode(QListBox::Single);
servers->setSelected(currentserver,TRUE);
}
return TRUE;
} else {
return FALSE;
}
}
/**
* read from config file(s)
*/
void PackageManagerSettings::readSettings()
{
readIpkgConfig("/etc/ipkg.conf");
readInstallationSettings();
}
void PackageManagerSettings::writeSettings()
{
- writeIpkgConfig("/etc/ipkg.conf");
+ if ( changed ) writeIpkgConfig("/etc/ipkg.conf");
writeInstallationSettings();
}
/** shows the setting dialog */
bool PackageManagerSettings::showDialog( int i )
{
TabWidget->setCurrentPage( i );
showMaximized();
bool ret = exec();
if ( ret ) writeSettings();
else readSettings();
- return ret;
+ return (changed && ret);
}
/** Returns the installation destination */
QString PackageManagerSettings::getDestinationName()
{
return activeDestination->currentText();
}
/** Returns the link destination */
QString PackageManagerSettings::getLinkDestinationName()
{
return activeLinkDestination->currentText();
}
/** Returns the URL of the active destination */
QString PackageManagerSettings::getDestinationUrl()
{
int dnr = activeDestination->currentItem();
return *destinationurlDic.find(dnr);
}
/** Should oipkg create links form install destination to link destination */
bool PackageManagerSettings::createLinks()
{
return CheckBoxLink->isChecked();
}
/** get the servers that are active */
QStringList PackageManagerSettings::getActiveServers()
{
QStringList sl;
for (int i=0; i<(int)activeServers->count(); i++)
{
if ( activeServers->isSelected(i) )
sl += activeServers->text(i);
}
return sl;
}
+ QStringList PackageManagerSettings::getServers()
+{
+ QStringList sl;
+ for (int i=0; i<(int)activeServers->count(); i++)
+ {
+ sl += activeServers->text(i);
+ }
+ return sl;
+}
/** returns the destination listed in ipkg.conf */
QStringList PackageManagerSettings::getDestinationUrls()
{
QStringList sl;
for (int i=0; i<(int)destinations->count(); i++)
{
sl += *destinationurlDic[i];
}
return sl;
}
/** returns the destination listed in ipkg.conf */
QString PackageManagerSettings::getDestinationUrlByName(QString n)
{
QStringList sl;
for (int i=0; i<(int)destinations->count(); i++)
{
if ( n == destinations->text(i)) return*destinationurlDic[i];
}
return "";
}
/** returns the destination listed in ipkg.conf */
QStringList PackageManagerSettings::getDestinationNames()
{
QStringList sl;
for (int i=0; i<(int)destinations->count(); i++)
{
sl += destinations->text(i);
}
return sl;
}
void PackageManagerSettings::linkEnabled( bool b )
{
- changed = true;
activeLinkDestination->setEnabled( b );
}
+
+void PackageManagerSettings::activeServerChanged()
+{
+ changed = true;
+}
+
+QComboBox* PackageManagerSettings::getDestCombo()
+{
+ return new QComboBox(activeDestination);
+}
diff --git a/noncore/unsupported/oipkg/pksettings.h b/noncore/unsupported/oipkg/pksettings.h
index 11ba55c..fbb3b99 100644
--- a/noncore/unsupported/oipkg/pksettings.h
+++ b/noncore/unsupported/oipkg/pksettings.h
@@ -1,64 +1,68 @@
#ifndef PACKAGEMANAGERSETTINGS_H
#define PACKAGEMANAGERSETTINGS_H
#include "pksettingsbase.h"
#include <qintdict.h>
class PackageManagerSettings : private PackageManagerSettingsBase
{
// Q_OBJECT
public:
PackageManagerSettings( QWidget* , const char* , WFlags );
~PackageManagerSettings();
bool showDialog( int ) ;
QString getDestinationUrl();
QString getDestinationName();
QString getLinkDestinationName();
bool createLinks();
+ QStringList getServers();
QStringList getActiveServers();
QStringList getDestinationUrls();
QStringList getDestinationNames();
QString getDestinationUrlByName(QString);
+ /** No descriptions */
+ QComboBox* getDestCombo();
private:
QIntDict<QString> serverurlDic;
QIntDict<QString> destinationurlDic;
int ipkg_old;
int editedserver;
int editeddestination;
int currentSetting;
int installationSettingsCount;
bool changed;
bool readIpkgConfig(const QString&);
void writeIpkgConfig(const QString&);
void writeSettings();
void readSettings();
public slots:
void writeInstallationSettings();
void readInstallationSettings();
void writeCurrentInstallationSetting();
void readInstallationSetting(int);
void installationSettingSetName(const QString &);
void newServer();
void editServer(int);
void removeDestination();
void newDestination();
void editDestination(int);
void linkEnabled(bool);
void removeServer();
void serverNameChanged(const QString&);
void serverUrlChanged(const QString&);
void destNameChanged(const QString&);
void destUrlChanged(const QString&);
void installationSettingChange(int);
void newInstallationSetting();
void removeInstallationSetting();
void renameInstallationSetting();
+ void activeServerChanged();
};
#endif
diff --git a/noncore/unsupported/oipkg/pksettingsbase.ui b/noncore/unsupported/oipkg/pksettingsbase.ui
index 196a89f..fd6d208 100644
--- a/noncore/unsupported/oipkg/pksettingsbase.ui
+++ b/noncore/unsupported/oipkg/pksettingsbase.ui
@@ -1,38 +1,38 @@
<!DOCTYPE UI><UI>
<class>PackageManagerSettingsBase</class>
<widget>
<class>QDialog</class>
<property stdset="1">
<name>name</name>
<cstring>Form4</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>349</width>
+ <width>345</width>
<height>454</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>Package Servers</string>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>3</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget row="0" column="0" >
<class>QTabWidget</class>
@@ -155,49 +155,49 @@
</widget>
<widget row="6" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout9</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>CheckBoxLink</cstring>
</property>
<property stdset="1">
<name>text</name>
- <string>Link Destination: root</string>
+ <string>Link to root destination</string>
</property>
</widget>
<widget>
<class>QComboBox</class>
<property stdset="1">
<name>name</name>
<cstring>activeLinkDestination</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
</widget>
</hbox>
</widget>
<widget row="3" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout13</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
@@ -697,42 +697,61 @@
<property stdset="1">
<name>name</name>
<cstring>destinationurl</cstring>
</property>
</widget>
<widget row="0" column="0" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel1_3_2</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Name:</string>
</property>
</widget>
</grid>
</widget>
</grid>
</widget>
</widget>
</grid>
</widget>
<connections>
+ <connection>
+ <sender>activeServers</sender>
+ <signal>pressed(QListBoxItem*)</signal>
+ <receiver>Form4</receiver>
+ <slot>activeServerChanged()</slot>
+ </connection>
+ <connection>
+ <sender>activeServers</sender>
+ <signal>selectionChanged(QListBoxItem*)</signal>
+ <receiver>Form4</receiver>
+ <slot>activeServerChanged()</slot>
+ </connection>
+ <connection>
+ <sender>activeServers</sender>
+ <signal>pressed(QListBoxItem*)</signal>
+ <receiver>Form4</receiver>
+ <slot>activeServerChanged()</slot>
+ </connection>
<slot access="public">destNameChanged(const QString&amp;)</slot>
<slot access="public">destUrlChanged(const QString&amp;)</slot>
<slot access="public">editDestination(int)</slot>
<slot access="public">editServer(int)</slot>
<slot access="public">installationSettingChange(int)</slot>
<slot access="public">installationSettingSetName(const QString &amp;)</slot>
<slot access="public">linkEnabled(bool)</slot>
<slot access="public">newDestination()</slot>
<slot access="public">newInstallationSetting()</slot>
<slot access="public">newServer()</slot>
+ <slot access="public">activeServerChanged()</slot>
<slot access="public">removeDestination()</slot>
<slot access="public">removeInstallationSetting()</slot>
<slot access="public">removeServer()</slot>
<slot access="public">renameInstallationSetting()</slot>
<slot access="public">serverNameChanged(const QString&amp;)</slot>
<slot access="public">serverUrlChanged(const QString&amp;)</slot>
</connections>
</UI>
diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp
index ecc97b2..9f6429a 100644
--- a/noncore/unsupported/oipkg/pmipkg.cpp
+++ b/noncore/unsupported/oipkg/pmipkg.cpp
@@ -1,388 +1,460 @@
#include "pmipkg.h"
#include "pksettings.h"
#include "package.h"
#include "packagelistitem.h"
#include <qpe/process.h>
#include <qpe/resource.h>
#include <qpe/config.h>
#include <qpe/stringutil.h>
#include <qdir.h>
#include <qfile.h>
+#include <qgroupbox.h>
#include <qmultilineedit.h>
#include <qstring.h>
#include <qcheckbox.h>
#include <qtextstream.h>
#include <qtextview.h>
#include <qprogressbar.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <stdlib.h>
#include <unistd.h>
#include "mainwindow.h"
PmIpkg::PmIpkg( PackageManagerSettings* s, QWidget* p, const char * name, WFlags f )
: QObject ( p )
{
settings = s;
runwindowopen = false;
runwindow = new RunWindow( p, name, true, f );
}
PmIpkg::~PmIpkg()
{
}
//#define PROC
#define SYSTEM
int PmIpkg::runIpkg(const QString& args, const QString& dest )
{
pvDebug(2,"PmIpkg::runIpkg "+args);
#ifdef PROC
QStringList cmd = "/usr/bin/ipkg ";
#endif
#ifdef SYSTEM
QString cmd = "/usr/bin/ipkg ";
#endif
pvDebug( 3,"PmIpkg::runIpkg got dest="+dest);
if ( dest == "" )
cmd += " -dest "+settings->getDestinationName();
else
cmd += " -dest "+ dest;
cmd += " -force-defaults ";
-// if (runwindow->forcedepends->isChecked())
-// cmd += " -force-depends ";
+ if (_force_depends)
+ {
+ if (_force_depends->isChecked())
+ cmd += " -force-depends ";
+ if (_force_reinstall->isChecked())
+ cmd += " -force-reinstall ";
+ if (_force_remove->isChecked())
+ cmd += " -force-removal-of-essential-packages ";
+ }
out( "<hr><br>Starting to "+ args+"<br>\n");
cmd += args;
int r = 0;
#ifdef PROC
QString o = "start";
Process *ipkg = new Process( "ls");//cmd );
out( "running:<br>\n"+ipkg->arguments().join(" ")+"<br>\n" );
QString description;
ipkg->exec("",o);
// out( o );
#endif
#ifdef SYSTEM
out( "running:<br>\n"+cmd+"<br>\n" );
QString redirect = "/tmp/oipkg.pipe";
cmd += " 2>&1 | tee "+redirect+" 2>&1";
pvDebug(2, "running >"+cmd+"<");
- r = system(cmd.latin1());
+ r = system(cmd.latin1());
QFile f( redirect );
QString line;
QString oldLine;
while ( ! f.open(IO_ReadOnly) ) {};
- // {
QTextStream t( &f );
- // QString fp;
while ( !t.eof() )
{
line = t.readLine();
if ( line != oldLine )
{
out( line +"<br>" );
oldLine = line;
}
}
-// }
f.close();
out( "Finished!<br>");
#endif
return r;
}
void PmIpkg::makeLinks(Package *pack)
{
pvDebug( 2, "PmIpkg::makeLinks "+ pack->name());
- QString dest = settings->getDestinationUrlByName( pack->dest() );
- if (dest == "/" ) return;
+ linkPackage( pack->name(), 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 fn = dest+"/"+statusDir+"/info/"+pack->name()+".list";
- linkPackage( fn, dest );
-}
-
-void PmIpkg::linkPackage( QString packFileName, QString dest )
-{
- QFile f( packFileName );
- if ( ! f.open(IO_ReadOnly) )
+ packFileName = dest+"/"+statusDir+"/info/"+packFileName+".list";
+ QFile f( packFileName );
+ if ( ! f.open(IO_ReadOnly) )
{
+ pvDebug(1," Panik! Could not open");
out( "<b>Panik!</b> Could not open:<br>"+packFileName );
- return;
- };
- out( "<br>creating links<br>" );
- out("for package "+packFileName+" in "+dest+"<br>");
+ return (QStringList*)0;
+ }
+ QStringList *fileList = new QStringList();
QTextStream t( &f );
- QString fp;
while ( !t.eof() )
{
- fp = t.readLine();
- processLinkDir( fp, dest );
+ *fileList += t.readLine();
}
- f.close();
+ return fileList;
}
+void PmIpkg::linkPackage( QString packFileName, QString dest )
+{
+ QStringList *fileList = getList( packFileName, dest );
+ processFileList( fileList, dest );
+ delete fileList;
+}
+
+void PmIpkg::processFileList( QStringList *fileList, QString d )
+{
+ if (!fileList) return;
+ for (uint i=0; i < fileList->count(); i++)
+ {
+ QString dest = settings->getDestinationUrlByName( d );
+ dest = dest==""?d:dest;
+ processLinkDir( (*fileList)[i], dest );
+ }
+}
+
+
void PmIpkg::processLinkDir( QString file, QString dest )
{
pvDebug( 7,"PmIpkg::processLinkDir "+file+" to "+ dest);
- if ( dest == "???" ) return;
+ if (linkOpp==createLink) pvDebug( 2,"opp: createLink");
+ if (linkOpp==removeLink) pvDebug( 2,"opp:removeLink");
+ if ( dest == "???" || dest == "" ) return;
QString destFile = file;
file = dest+"/"+file;
if (file == dest) return;
QFileInfo fileInfo( file );
if ( fileInfo.isDir() )
{
QDir destDir( destFile );
- destDir.mkdir( destFile, true );
+ 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()) )
{
- // out( "<b>"+fi->absFilePath()+"</b>" );
+ pvDebug(4, "process dir "+fi->absFilePath());
processLinkDir( fi->absFilePath(), dest );
++it;
}
+// if (linkOpp==removeLink)
+// {
+// pvDebug(2,"remove destDir "+ destFile );
+// destDir.remove( destFile, true );
+// }
} else
if ( fileInfo.isFile() )
{
const char *instFile = strdup( (file).ascii() );
const char *linkFile = strdup( (destFile).ascii());
-// out( "linking: "+file+" -> "+destFile );
- qDebug( "linking: %s -> %s", instFile, linkFile );
- symlink( instFile, linkFile );
+ if( linkOpp==createLink )
+ {
+ pvDebug(4, "linking: "+file+" -> "+destFile );
+ symlink( instFile, linkFile );
+ }
+ } else {
+ const char *linkFile = strdup( (destFile).ascii());
+ if( linkOpp==removeLink )
+ {
+ pvDebug(4,"removing "+destFile+" no "+file);
+ QFileInfo toRemoveLink( destFile );
+ if ( !QFile::exists( file ) && toRemoveLink.isSymLink() )
+ unlink( linkFile );
+ }
}
}
void PmIpkg::commit( PackageList pl )
{
int sizecount = 0;
to_install.clear();
to_remove.clear();
QString rem="<b>"+tr("To remove:")+"</b><br>\n";
QString inst="<b>"+tr("To install:")+"</b><br>\n";
- pl.allPackages();
for( Package *pack = pl.first();pack ; (pack = pl.next()) )
{
if ( pack && (pack->name() != "") && pack)
{
if ( pack->toInstall() )
{
to_install.append( pack );
sizecount += pack->size().toInt();
inst += pack->name()+"\t("+tr("on ")+pack->dest()+")<br>";
}
if ( pack->toRemove() )
{
to_remove.append( pack );
sizecount += 1;
rem += pack->name()+"<br>";
}
}
}
startDialog();
}
void PmIpkg::startDialog()
{
installDialog = new QDialog(0,0,true);
QGridLayout *RunWindowLayout = new QGridLayout( installDialog );
RunWindowLayout->setSpacing( 2 );
RunWindowLayout->setMargin( 2 );
- QHBoxLayout *buttons = new QHBoxLayout;
- buttons->setSpacing( 6 );
- buttons->setMargin( 0 );
-
PackageListView *plv = new PackageListView(installDialog, "install",settings);
+ plv->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding, plv->sizePolicy().mayShrinkVertically()) );
RunWindowLayout->addWidget( plv, 1, 0 );
+ QCheckListItem *toRemoveItem;
+ toRemoveItem= new QCheckListItem( plv, QObject::tr("To remove") );
+ toRemoveItem->setOpen( true );
for (Package *it=to_remove.first(); it != 0; it=to_remove.next() )
{
- plv->insertItem( new PackageListItem(plv, it,settings) );
+ toRemoveItem->insertItem( new PackageListItem(plv, it,settings) );
}
+ QCheckListItem *toInstallItem;
+ toInstallItem = new QCheckListItem( plv, QObject::tr("To install") );
+ toInstallItem->setOpen( true );
for (Package *it=to_install.first(); it != 0; it=to_install.next() )
{
- plv->insertItem( new PackageListItem(plv, it,settings) );
+ toInstallItem->insertItem( new PackageListItem(plv, it,settings) );
}
- QPushButton *doItButton = new QPushButton( installDialog, "doItButton" );
- doItButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, doItButton->sizePolicy().hasHeightForWidth() ) );
- QFont doItButton_font( doItButton->font() );
- doItButton_font.setPointSize( 8 );
- doItButton->setFont( doItButton_font );
- doItButton->setText( tr( "Do all " ) );
- doItButton->setAutoResize( FALSE );
- buttons->addWidget( doItButton );
-
- QPushButton *installButton = new QPushButton( installDialog, "installButton" );
- QFont installButton_font( installButton->font() );
- installButton_font.setPointSize( 8 );
- installButton->setFont( installButton_font );
- installButton->setText( tr( "Install" ) );
- installButton->setAutoResize( TRUE );
- buttons->addWidget( installButton );
-
- QPushButton *removeButton = new QPushButton( installDialog, "removeButton" );
- QFont removeButton_font( removeButton->font() );
- removeButton_font.setPointSize( 7 );
- removeButton->setFont( removeButton_font );
- removeButton->setText( tr( "Remove" ) );
- removeButton->setAutoResize( TRUE );
- buttons->addWidget( removeButton );
-
- QPushButton *cancelButton = new QPushButton( installDialog, "cancelButton" );
- QFont cancelButton_font( cancelButton->font() );
- cancelButton_font.setPointSize( 8 );
- cancelButton->setFont( cancelButton_font );
- cancelButton->setText( tr( "Cancel" ) );
- cancelButton->setAutoResize( TRUE );
- buttons->addWidget( cancelButton );
-
- RunWindowLayout->addLayout( buttons, 3, 0 );
-
- connect( doItButton, SIGNAL( clicked() ),
- this, SLOT( doIt() ) );
- connect( installButton, SIGNAL( clicked() ),
- this, SLOT( install() ) );
- connect( removeButton, SIGNAL( clicked() ),
- this, SLOT( remove() ) );
- connect( cancelButton, SIGNAL( clicked() ),
- installDialog, SLOT( close() ) );
+
+ QGroupBox *GroupBox1 = new QGroupBox( installDialog, "Ipkg" );
+ GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)3, GroupBox1->sizePolicy().hasHeightForWidth() ) );
+ GroupBox1->setTitle( tr( "Ipkg options" ) );
+ GroupBox1->setColumnLayout(0, Qt::Vertical );
+ GroupBox1->layout()->setSpacing( 0 );
+ GroupBox1->layout()->setMargin( 0 );
+ QGridLayout *GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+ GroupBox1Layout->setAlignment( Qt::AlignTop );
+ GroupBox1Layout->setSpacing( 3 );
+ GroupBox1Layout->setMargin( 3 );
+
+ _force_depends = new QCheckBox( GroupBox1, "_force_depends" );
+ _force_depends->setText( tr( "-force-depends" ) );
+ _force_depends->setAutoResize( TRUE );
+ GroupBox1Layout->addWidget( _force_depends, 0, 0 );
+ _force_reinstall = new QCheckBox( GroupBox1, "_force_reinstall" );
+ _force_reinstall->setText( tr( "-force-reinstall" ) );
+ _force_reinstall->setAutoResize( TRUE );
+ GroupBox1Layout->addWidget( _force_reinstall, 1, 0 );
+ _force_remove = new QCheckBox( GroupBox1, "_force_remove" );
+ _force_remove->setText( tr( "-force-removal-of-essential-packages" ) );
+ _force_remove->setAutoResize( TRUE );
+ GroupBox1Layout->addWidget( _force_remove, 1, 0 );
+ RunWindowLayout->addWidget( GroupBox1 , 3, 0 );
+
+// connect( doItButton, SIGNAL( clicked() ),
+// this, SLOT( doIt() ) );
+// connect( installButton, SIGNAL( clicked() ),
+// this, SLOT( install() ) );
+// connect( removeButton, SIGNAL( clicked() ),
+// this, SLOT( remove() ) );
+// connect( cancelButton, SIGNAL( clicked() ),
+// installDialog, SLOT( close() ) );
installDialog->showMaximized();
if ( installDialog->exec() ) doIt();
installDialog->close();
+ out(tr("<b>All done.</b>"));
}
void PmIpkg::doIt()
{
+ show( true );
remove();
install();
}
void PmIpkg::remove()
{
if ( to_remove.count() == 0 ) return;
- installDialog->close();
- show( true );
- out("<hr><hr><b>"+tr("Removing")+"<br>"+tr("please wait")+"</b><br>");
+ out("<b>"+tr("Removing")+"<br>"+tr("please wait")+"</b><br><hr>");
+ QStringList *fileList;
for (Package *it=to_remove.first(); it != 0; it=to_remove.next() )
{
+ if ( it->link() )fileList = getList( it->name(), it->dest() );
if ( runIpkg("remove " + it->name()) == 0)
{
- runwindow->progress->setProgress( it->size().toInt() + runwindow->progress->progress());
- it->processed();
- runwindow->progress->setProgress( 1 );
+ runwindow->progress->setProgress( 1 + runwindow->progress->progress() );
+ linkOpp = removeLink;
+ if ( it->link() )
+ {
+ out( "<br>removing links<br>" );
+ out( "for package "+it->name()+" in "+it->dest()+"<br>" );
+ processFileList( fileList, it->dest() );
+ }
+ it->processed();
+ out("<br><hr>");
}else{
- out("<b>"+tr("Error while removing")+"</b>"+it->name());
+ out("<b>"+tr("Error while removing")+"</b><hr>"+it->name());
}
+ pvDebug(2,"delete File List");
+ if ( it->link() )delete fileList;
}
+ out("<br>");
}
void PmIpkg::install()
{
if ( to_install.count() == 0 ) return;
- installDialog->close();
- show( true );
- out("<hr><hr><b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>");
+ out("<b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>");
for (Package *it=to_install.first(); it != 0; it=to_install.next() )
{
if ( runIpkg("install " + it->getPackageName(), it->dest() ) == 0 )
{
runwindow->progress->setProgress( it->size().toInt() + runwindow->progress->progress());
+ linkOpp = createLink;
if ( it->link() )
+ {
+ out( "<br>creating links<br>" );
+ out( "for package "+it->name()+" in "+it->dest()+"<br>" );
makeLinks( it );
+ }
it->processed();
+ out("<br><hr>");
}else{
- out("<b>"+tr("Error while installing")+"</b>"+it->name());
+ out("<b>"+tr("Error while installing")+"</b><hr>"+it->name());
}
}
+ out("<br>");
}
-void PmIpkg::linkDestination( const QString msg, const QByteArray dest )
+void PmIpkg::createLinks( const QString &dest )
{
- qDebug("msg="+msg+" -- "+QString(dest) );
-// QDir d( src );
-// d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
-//// if (! d.exists() ) return;
-// const QFileInfoList *list = d.entryInfoList();
-// QFileInfoListIterator it( *list );
-// QFileInfo *fi;
-// while ( (fi=it.current()) ) {
-// processLinkDir( fi->absFilePath(), dest );
-// ++it;
-// }
+ pvDebug(2,"PmIpkg::createLinks "+dest);
+ linkOpp=createLink;
+ QString url = settings->getDestinationUrlByName( dest );
+ url = url==""?dest:url;
+ processLinkDir( "/", url );
+}
+
+void PmIpkg::removeLinks( const QString &dest )
+{
+ pvDebug(2,"PmIpkg::removeLinks "+dest);
+ linkOpp=removeLink;
+ QString url = settings->getDestinationUrlByName( dest );
+ url = url==""?dest:url;
+ processLinkDir( "/", url );
}
void PmIpkg::update()
{
show( false );
runIpkg( "update" );
runwindow->close();
}
void PmIpkg::out( QString o )
{
- runwindow->outPut->setText( runwindow->outPut->text()+o );
+ runwindow->outPut->append(o);
+ //runwindow->outPut->setCursorPosition(0, runwindow->outPut->contentsHeight());
+// runwindow->outPut->setText( runwindow->outPut->text()+o );
runwindow->outPut->setContentsPos(0, runwindow->outPut->contentsHeight());
}
void PmIpkg::showButtons(bool b)
{
if ( b )
{
runwindow->cancelButton->hide();
runwindow->doItButton->hide();
runwindow->removeButton->hide();
runwindow->installButton->hide();
}else{
runwindow->cancelButton->show();
runwindow->doItButton->show();
runwindow->removeButton->show();
runwindow->installButton->show();
}
}
void PmIpkg::show(bool b)
{
if (!runwindow->isVisible())
runwindow->showMaximized();
showButtons(b);
if ( !b )
runwindow->progress->hide();
else
runwindow->progress->show();
}
-void PmIpkg::installFile(const QString &fileName)
+void PmIpkg::installFile(const QString &fileName, const QString &dest)
{
to_install.clear();
to_remove.clear();
pvDebug( 2,"PmIpkg::installFile "+ fileName);
- to_install.append( new Package(fileName,settings) );
+ Package *p = new Package(fileName,settings);
+ if ( dest!="") p->setDest( dest );
+ to_install.append( p );
+ startDialog();
+ 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);
+ if ( dest!="") p->setDest( dest );
+ to_remove.append( p );
startDialog();
+ delete p;
}
diff --git a/noncore/unsupported/oipkg/pmipkg.h b/noncore/unsupported/oipkg/pmipkg.h
index c5e6255..0625032 100644
--- a/noncore/unsupported/oipkg/pmipkg.h
+++ b/noncore/unsupported/oipkg/pmipkg.h
@@ -1,52 +1,64 @@
#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 "debug.h"
+#define createLink 0
+#define removeLink 1
+
class Package;
class PmIpkg : public QObject
{
Q_OBJECT
public:
PmIpkg( PackageManagerSettings* , QWidget* p=0, const char * name=0, WFlags f=0 );
~PmIpkg();
+ int linkOpp;
void commit( PackageList );
void update();
- PackageList* getPackageList();
+ // PackageList* getPackageList();
void showButtons(bool b=true);
void show( bool buttons=true );
+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:
PackageManagerSettings* settings;
RunWindow *runwindow;
QDialog *installDialog;
QList<Package> to_remove;
QList<Package> to_install;
bool runwindowopen;
QString fileNameToInstall;
-
+ QCheckBox *_force_reinstall;
+ QCheckBox *_force_remove;
+ QCheckBox *_force_depends;
void startDialog();
void makeLinks(Package*);
void linkPackage( QString, QString );
- void processLinkDir( QString, QString );
+ void processLinkDir( QString , QString );
int runIpkg(const QString& args, const QString& dest="" );
void out( QString );
+ QStringList* getList( QString, QString );
+ void processFileList( QStringList*, QString );
+
-public slots:
- void doIt();
- void install();
- void remove();
- void installFile(const QString &fileName);
- void linkDestination( const QString, const QByteArray );
};
#endif
diff --git a/noncore/unsupported/oipkg/settings.cpp b/noncore/unsupported/oipkg/settings.cpp
index 2b324be..8f91995 100644
--- a/noncore/unsupported/oipkg/settings.cpp
+++ b/noncore/unsupported/oipkg/settings.cpp
@@ -413,24 +413,29 @@ QStringList PackageManagerSettings::getActiveServers()
QStringList sl;
for (int i=0; i<(int)activeServers->count(); i++)
{
if ( activeServers->isSelected(i) )
sl += activeServers->text(i);
}
return sl;
}
/** returns the destination listed in ipkg.conf */
QStringList PackageManagerSettings::getDestinationUrls()
{
QStringList sl;
for (int i=0; i<(int)destinations->count(); i++)
{
sl += *destinationurlDic[i];
}
return sl;
}
void PackageManagerSettings::linkEnabled( bool b )
{
activeLinkDestination->setEnabled( b );
}
+
+void PackageManagerSettings::activeDestinationChange(int i)
+{
+ activeLinkDestination->setCurrentItem( i );
+} \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/settings.h b/noncore/unsupported/oipkg/settings.h
index cf6e614..e2072f1 100644
--- a/noncore/unsupported/oipkg/settings.h
+++ b/noncore/unsupported/oipkg/settings.h
@@ -1,63 +1,63 @@
#ifndef PACKAGEMANAGERSETTINGS_H
#define PACKAGEMANAGERSETTINGS_H
#include "pksettingsbase.h"
#include <qintdict.h>
class PackageManagerSettings : public PackageManagerSettingsBase
//class PackageManagerSettings : private PackageManagerSettingsBase
{
// Q_OBJECT
public:
PackageManagerSettings( QWidget* , const char* , WFlags );
~PackageManagerSettings();
bool showDialog( int ) ;
QString getDestinationUrl();
QString getDestinationName();
QString getLinkDestinationName();
bool createLinks();
QStringList getActiveServers();
QStringList getDestinationUrls();
-private:
- QIntDict<QString> serverurlDic;
- QIntDict<QString> destinationurlDic;
- int ipkg_old;
- int editedserver;
- int editeddestination;
- int currentSetting;
- int installationSettingsCount;
- bool changed;
-
- bool readIpkgConfig(const QString&);
- void writeIpkgConfig(const QString&);
- void writeSettings();
- void readSettings();
-
public slots:
- void writeInstallationSettings();
+ void writeInstallationSettings();
void readInstallationSettings();
void writeCurrentInstallationSetting();
void readInstallationSetting(int);
void installationSettingSetName(const QString &);
-
+ void activeDestinationChange(int)
void newServer();
void editServer(int);
void removeDestination();
void newDestination();
void editDestination(int);
void linkEnabled(bool);
void removeServer();
void serverNameChanged(const QString&);
void serverUrlChanged(const QString&);
void destNameChanged(const QString&);
void destUrlChanged(const QString&);
void installationSettingChange(int);
void newInstallationSetting();
void removeInstallationSetting();
void renameInstallationSetting();
+
+private:
+ QIntDict<QString> serverurlDic;
+ QIntDict<QString> destinationurlDic;
+ int ipkg_old;
+ int editedserver;
+ int editeddestination;
+ int currentSetting;
+ int installationSettingsCount;
+ bool changed;
+
+ bool readIpkgConfig(const QString&);
+ void writeIpkgConfig(const QString&);
+ void writeSettings();
+ void readSettings();
};
#endif
diff --git a/noncore/unsupported/oipkg/utils.cpp b/noncore/unsupported/oipkg/utils.cpp
new file mode 100644
index 0000000..13b17fb
--- a/dev/null
+++ b/noncore/unsupported/oipkg/utils.cpp
@@ -0,0 +1,27 @@
+/***************************************************************************
+ utils.cpp - description
+ -------------------
+ begin : Sun Apr 28 2002
+ copyright : (C) 2002 by tille
+ email : tille@handhelds.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include <qcombobox.h>
+#include <qstring.h>
+#include "utils.h"
+
+void setComboName( QComboBox* combo, QString s)
+{
+ for ( int i = 0; i < combo->count(); i++)
+ if ( combo->text( i ) == s )
+ combo->setCurrentItem( i );
+} \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/utils.h b/noncore/unsupported/oipkg/utils.h
new file mode 100644
index 0000000..bb033c5
--- a/dev/null
+++ b/noncore/unsupported/oipkg/utils.h
@@ -0,0 +1,18 @@
+/***************************************************************************
+ utils.h - description
+ -------------------
+ begin : Sun Apr 28 2002
+ copyright : (C) 2002 by tille
+ email : tille@handhelds.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+void setComboName( QComboBox*, QString ); \ No newline at end of file