You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeadmin/kpackage/packageInfo.h

166 lines
4.9 KiB

/*
** Copyright (C) 1999,2000 Toivo Pedaste <toivo@ucs.uwa.edu.au>
**
// Author: Damyan Pepper
//
// This file contains the definition of the class packageInfo
//
// packageInfo is used to store information regarding an package.
// This information is normally gained by querying the database or
// by querying an package.
//
// The package information consists of a set of properties. These
// properties are stored in a dictionary that is passed to the
// constructor. The properties can be accessed using the function
// `getProperty'.
//
// In addition, packageInfo objects can place themselves inside
// a tree list with the function `place'. Doing this creates
// a tree list item object that can be accessed with the function
// `item'.
*/
/*
** 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 PACKAGEINFO_H
#define PACKAGEINFO_H
#include "../config.h"
#include <tqmap.h>
#include <tqdict.h>
#include <tqstring.h>
#include <tqpixmap.h>
#include <tqptrlist.h>
#include <tqlistview.h>
class pkgInterface;
class KpTreeListItem;
class KpTreeList;
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
class packageInfo
{
public:
packageInfo(TQMap<TQString, TQString> _info, pkgInterface *type);
// Constructor: create a packageInfo object using the property
// dictionary from _info
packageInfo(TQMap<TQString, TQString> _info, const TQString &_filename);
// Constructor: same as above, but also sets filename to _filename.
// This is used in the case that the package info was obtained from
// an uninstalled package.
~packageInfo();
// Distructor
/**
* Look ups the property `property' from the dictionary
*/
TQString getProperty(const TQString &property);
/**
* Checks whether the property `property' is defined in the dictionary
*/
bool hasProperty(const TQString &property);
void fixup();
// Initialize fields if missing
KpTreeListItem *place(KpTreeList *tree, bool InsertI=FALSE);
// places the object in the treelist `tree' and initialises
// `item'. If necessary, new groups will be added to `tree'.
KpTreeListItem *getItem();
// returns the treelist item object for this package or
// NULL if the object hasn't been placed
void setFilename(const TQString &f);
TQString getUrl();
// return URL of package file
bool isFileLocal();
// True if package file is local or cached file
bool isInstallable();
// True if package can be installed
bool isFetchable();
// True if package needs to be fetched
TQString getFilename();
TQString fetchFilename();
// gets the filename, fetching package if necessary
int newer(packageInfo *p);
// if package p is newer
void pkgFileIns(const TQString &fileName);
// Insert a package from a file into package tree
bool pkgInsert(TQPtrList<packageInfo> *pki, const TQString &exp, bool installed,
bool infoPackage = FALSE);
// insert packgeInfo either installed or not installed
TQMap<TQString, TQString> info;
// This stores the property dictionary of the package
KpTreeListItem *item;
// This stores the tree list item for this package (or NULL if
// the package hasn't been placed in a tree list)
pkgInterface *interface;
// interface points to the class of the package (deb, rpm etc)
bool smerge( const TQString &exp);
// merge with already existing NOLIST package info
bool display(int treeType);
// if this package is to be should in the tree list
enum {UNSET, AVAILABLE, INSTALLED, BAD_INSTALL, UPDATED,
NEW, NOLIST, HIDDEN};
int packageState;
bool updated;
private:
int getDigElement(const TQString &s, int *pos);
TQString getNdigElement(const TQString &s, int *pos);
// break up version string
int pnewer(const TQString &s, const TQString &sp);
// compare parts of a version string
TQString url;
// This stores the filename of the package the info was obtained from.
// If it is empty then the info was obtained from an installed package.
};
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#endif