/* ====================================================================
 * Copyright (c) 2003-2006, Martin Hauner
 *                          http://subcommander.tigris.org
 *
 * Subcommander is licensed as described in the file doc/COPYING, which
 * you should have received as part of this distribution.
 * ====================================================================
 */

#ifndef _SC_REVISIONWIDGET_H
#define _SC_REVISIONWIDGET_H

// sc
class RevisionProvider;
namespace svn
{
  class Revision;
}

// qt
#include <qgroupbox.h>
class QComboBox;
class QSpinBox;
class QDateTimeEdit;
class ExternButton;
class QWidgetStack;
class QPopupMenu;
class QCheckBox;
class QToolButton;
class QHBox;


class RevisionWidget : public QGroupBox
{
  typedef QGroupBox super;
  Q_OBJECT 

public:
  /**
   * construct a RevisionWidget.
   * @param types     combination of "S"ymbolic, "N"umeric and "D"ate
   * @param symbols   combination of "H"ead, "B"ase, "C"ommitted, "P"revious,
   *                  "W"orking
   */

  RevisionWidget( bool allowNoRevision, const QString& types, const QString& symbols,
    RevisionProvider* prov, QWidget *parent );
  virtual ~RevisionWidget();

  svn::Revision* getRevision() const;
  void setRevision( const svn::Revision* );

private slots:
  void toggled( bool );
  void popup();

private:
  void addType( const QChar& );
  void addSymbol( const QChar& );

private:
  QCheckBox*        _disable;
  QWidgetStack*     _stack;
  QComboBox*        _symRev;
  QSpinBox*         _numRev;
  QDateTimeEdit*    _dateRev;
  QToolButton*      _menuButton;
  QPopupMenu*       _menu;
  QHBox*            _revBox;

  ExternButton*     _extern;
  RevisionProvider* _revpro;
};


#endif // _SC_REVISIONWIDGET_H


syntax highlighted by Code2HTML, v. 0.9.1