/*
** Copyright (C) 1999,2000 Toivo Pedaste <toivo@ucs.uwa.edu.au>
**
// This widget is used to display information and the file list of a
// package.
//
// Package information will be displayed using (another) sub-widget
// that is inherited from a TQTableView.
//
// The file list will be displayed using a tree list.
//
// The widget is mainly a TQTabDialog with two tabs: Info and FileList.
// The Info tab is the default one.
*/

/*
** 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 PACKAGEDISPLAY_H
#define PACKAGEDISPLAY_H
#include "../config.h"

// TQt Headers
#include <tqframe.h>
#include <tqtabbar.h>
#include <tqtabwidget.h>
#include <tqvbox.h>
#include <tdepopupmenu.h>  
#include <tdelistview.h>

class packagePropertiesWidget;
class packageInfo;
class TQListViewItem;
class TQTextEdit;
class packageDisplayWidget;
class kpFileList : public TDEListView
{
  TQ_OBJECT
  

public:
  
  kpFileList(TQWidget* parent, packageDisplayWidget* parent2);
  
  TQString item2Path(TQListViewItem *it);
  

public slots:
 
  void openContext(TDEListView *, TQListViewItem *, const TQPoint &);
  
  virtual void clear();
  
  TQListViewItem* insert(const TQString &cur, const TQPixmap &pixmap);

  
 private:
   TDEPopupMenu *FileListMenu;
   packageDisplayWidget* pkDisplay;
   
   int openwith;

};

class packageDisplayWidget : public TQTabWidget
{
  TQ_OBJECT
  

  friend class kpFileList;
  ///////////// METHODS ------------------------------------------------------
public:
  packageDisplayWidget(TQWidget *parent=0);
  // Constructor

  ~packageDisplayWidget();
  // Destructor

  void noPackage();
  // clear package display in right panel

  void changePackage(packageInfo *p);
  // Set currently selected package

private:
  void setupWidgets();
  // This sets up the sub-widgets

  void updateFileList();
  // This updates the file list to match that found with the currently
  // selected package
  
  void updateChangeLog();
  // This updates the change log to match that found with the currently
  // selected package
  
  void tabSet(TQWidget *);
  // Set display for corresponding tab

  ///////////// SLOTS --------------------------------------------------------
public slots:

  void tabSelected(TQWidget *);

  void openBinding(TQListViewItem *);

  void openBindingWith(TQListViewItem *);  
  
void __openBindingWith();
  
  
  ///////////// SIGNALS ------------------------------------------------------

  ///////////// DATA ---------------------------------------------------------
public:
  packageInfo *package;
  // the currently selected package

private:

  TQTabWidget *tabbar;
  // The tab bar

  TQVBox *proptab, *fltab, *cltab;

  TQWidget *curTab;
  // current active tab

  kpFileList *fileList;
  // This holds the file list (and is used as a page on the tab dialog)

  TQTextEdit *changeLog;
  // Holds changelog

  TQPixmap tick, cross, question, *blank;
  // The pixmaps for the filelist

  packagePropertiesWidget *packageProperties;
  // This displays the package properties (and is used as a page on the
  // tab dialog)

  bool initList;
  // True is file list has been initialised
};
#endif