summaryrefslogtreecommitdiffstats
path: root/kpackage/pkgInterface.h
blob: 3094af85b2c4138bc8963b507648893bcb027e85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
/*
** Copyright (C) 1999,2000 Toivo Pedaste <toivo@ucs.uwa.edu.au>
**
*/

/*
** 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.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program in a file called COPYING; if not, write to
** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
** MA 02110-1301, USA.
*/

/*
** Bug reports and questions can be sent to kde-devel@kde.org
*/


#ifndef PKG_IFACE_H
#define PKG_IFACE_H

#include "../config.h"
#include <qptrlist.h>
#include <qstring.h>
#include <qstringlist.h>

#include <kglobal.h>
#include <kstandarddirs.h>

#include "packageInfo.h"
#include "managementWidget.h"

class packageInfo;
class pkgOptions;
class Locations;
class LcacheObj;
class cacheObj;
class KAccel;
class KActionCollection;
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

//  flags to install and uninstall
class param
{
public:
  param(const QString &nameP, bool initP,  bool invertP, const QString &flagP);
  param(const QString &nameP, bool initP,  bool invertP, const QString &flagP, const QString &flagAP);
  ~param();

  QString name;  // Name of flag
  bool init;         // Initial value
  bool invert;       // Whether it needs to be inverted
  QString flag; // text flag on command
  QString flagA; // text flag on command
};

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
class pkgInterface: public QObject
{
  Q_OBJECT

public:
  pkgInterface();
  virtual ~pkgInterface();

  virtual bool isType(char *buf, const QString &fname) =  0;
  // looks at start of file to check that package is correct type

  virtual void makeMenu(KActionCollection* act);
  virtual void setMenu(KActionCollection* act, bool enable);

  bool ifExe(QString exe);
  // Check if this executable exists
  
  virtual packageInfo *getPackageInfo(char mode, const QString &name,
				      const QString &version) =  0;
  // get info on installed or uninstalled package. version is only set if
  // mode is 'i' (ie, if the package is already installed).

  virtual QStringList getFileList(packageInfo *p) =  0;
  // get list of files in the package

  virtual QStringList depends(const QString &name, int src);
  // check dependencies for package

  virtual QStringList verify(packageInfo *p, const QStringList &files);
  // check the installed files in a package

  virtual QStringList FindFile(const QString &name, bool seachAll=false) = 0;
  // search for packages containg a file

  virtual QStringList getChangeLog(packageInfo *p) = 0;
  // Get change log

  virtual bool filesTab(packageInfo *p) = 0;
  // If files tab is to be enabled

  virtual bool changeTab(packageInfo *p) = 0;
  // If change log tab is to be enabled

  virtual bool parseName(const QString &name, QString *n, QString *v) = 0;
  // breakup file name into package name and version

  virtual void listPackages(QPtrList<packageInfo> *pki);
  // scan various locations for list of packages

  virtual void listInstalledPackages(QPtrList<packageInfo> *pki) = 0;
  // produce list of currently installed packages

  virtual QStringList  listInstalls(const QStringList &packs, bool install, bool &cancel);
  // Convert list of packages requested to install to list of all packages to install

  virtual void smerge(packageInfo *p);
  // merge in package info entry

  QString getDir(cacheObj *cp);
  // list directory local or remote

  void listDir(QPtrList<packageInfo> *pki, const QString &fname, const QString &dir, bool subdirs = FALSE);
  // list the packages in a directory

  packageInfo *collectDir(const QString &name, const QString &size, const QString &dir);
  // build packageInfo object from directory entry

  QString getPackList(cacheObj *cp);
  // get packages information file

  virtual QString  provMap(const QString &p);
  // convert from package depends to package

  QString setOptions(int flags, QPtrList<param> &params);
  // convert un/install flags to text

  virtual QString doUninstall(int uninstallFlags, const QString &packs, bool &test);
  virtual QString doInstall(int installFlags, const QString &packs, bool &test);
  virtual QString uninstall(int uninstallFlags, QPtrList<packageInfo> *p,
				  bool &test);
  virtual QString uninstall(int uninstallFlags, packageInfo *p,
				  bool &test);
  virtual QString install(int installFlags, QPtrList<packageInfo> *p,
				  bool &test);
  virtual QString install(int installFlags, packageInfo *p,
				  bool &test);

  virtual QStringList readApt();
  virtual void writeApt(const QStringList &list);

  ///////////// DATA ///////////////////////
  pkgOptions *uninstallation, *installation;

  QString icon;
  // name icon file
  QString head;
  // capitalized name of package type
  QString name;
  // More descriptive name
  QPixmap pict, bad_pict, new_pict, updated_pict;
  // icons for package states
  QPixmap folder;
  // icon for package group
  QPixmap markInst;
  QPixmap markUnInst;
  // icon indicating mark for install/uninstall

  Locations *locatedialog;
  // dialog for setting the locations of  uninstalled packages
  LcacheObj *packageLoc;
  // List of locations of uninstalled pacckages

  bool dirOK;
  // variables related to reading packages from directories

  QString packagePattern;
  QString queryMsg;
  QString typeID;
  // Parameters for reading packages from directories

  QPtrList<param> paramsInst;
  QPtrList<param> paramsUninst;

  bool noFetch;
  // kpackage doesn't fetch this type of package itself

  bool defaultHandle;
  // This package type defaults to on

  QString errExe;
  // The name of an executable that wasn't found

  QString procMsg;
  // for running processes

  QString DELMSG;

  bool hasRemote;
  // can access on remote host

  bool hasSearchAll;
  // can search uninstalled packages for files

  bool hasProgram;
  // the program needed to handle this package type is available

public slots:
  virtual void setLocation() = 0;
  virtual void setAvail(LcacheObj *) = 0;
};

#endif