SelectableImpl.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef ZYPP_UI_SELECTABLEIMPL_H
00013 #define ZYPP_UI_SELECTABLEIMPL_H
00014 
00015 #include <iosfwd>
00016 
00017 #include "zypp/base/PtrTypes.h"
00018 
00019 #include "zypp/ui/Selectable.h"
00020 #include "zypp/ui/SelectableTraits.h"
00021 
00023 namespace zypp
00024 { 
00025 
00026   namespace ui
00027   { 
00028 
00030     //
00031     //  CLASS NAME : Selectable::Impl
00032     //
00037     struct Selectable::Impl
00038     {
00039       friend std::ostream & operator<<( std::ostream & str, const Selectable::Impl & obj );
00040 
00041     public:
00042 
00043       typedef SelectableTraits::AvialableItemSet             AvialableItemSet;
00044       typedef SelectableTraits::availableItem_iterator       availableItem_iterator;
00045       typedef SelectableTraits::availableItem_const_iterator availableItem_const_iterator;
00046       typedef SelectableTraits::availableItem_size_type      availableItem_size_type;
00047 
00048     public:
00049       Impl( const ResObject::Kind & kind_r,
00050             const std::string & name_r,
00051             const PoolItem & installedItem_r,
00052             availableItem_const_iterator availableBegin_r,
00053             availableItem_const_iterator availableEnd_r )
00054       : _kind( kind_r )
00055       , _name( name_r )
00056       , _installedItem( installedItem_r )
00057       , _availableItems( availableBegin_r, availableEnd_r )
00058       {
00059         setCandidate( NULL );
00060       }
00061 
00062     public:
00064       ResObject::Kind kind() const
00065       { return _kind; }
00066 
00068       const std::string & name() const
00069       { return _name; }
00070 
00072       Status status() const;
00073 
00075       bool set_status( const Status state_r );
00076 
00078       PoolItem installedObj() const
00079       { return _installedItem; }
00080 
00085       PoolItem candidateObj() const
00086       {
00087         return _candidate;
00088       }
00089 
00094       PoolItem setCandidate( ResObject::constPtr byUser_r );
00095 
00097       PoolItem theObj() const
00098       {
00099         PoolItem ret( candidateObj() );
00100         return( ret ? ret : _installedItem );
00101       }
00102 
00104       availableItem_size_type availableObjs() const
00105       { return _availableItems.size(); }
00106 
00108       availableItem_const_iterator availableBegin() const
00109       { return _availableItems.begin(); }
00110 
00112       availableItem_const_iterator availableEnd() const
00113       { return _availableItems.end(); }
00114 
00116       ResStatus::TransactByValue modifiedBy() const;
00117 
00119       bool hasLicenceConfirmed() const
00120       { return candidateObj() && candidateObj().status().isLicenceConfirmed(); }
00121 
00123       void setLicenceConfirmed( bool val_r )
00124       { if ( candidateObj() ) candidateObj().status().setLicenceConfirmed( val_r ); }
00125 
00126      private:
00127       ResObject::Kind  _kind;
00128       std::string      _name;
00129       PoolItem         _installedItem;
00130       AvialableItemSet _availableItems;
00131       PoolItem         _candidate;
00132     };
00134 
00136     inline std::ostream & operator<<( std::ostream & str, const Selectable::Impl & obj )
00137     {
00138       return str << '[' << obj.kind() << ']' << obj.name() << ": " << obj.status()
00139                  << " (I " << obj._installedItem << ")"
00140                  << " (A " << obj._availableItems.size() << ")"
00141                  << obj._candidate;
00142     }
00143 
00145   } // namespace ui
00148 } // namespace zypp
00150 #endif // ZYPP_UI_SELECTABLEIMPL_H

Generated on Thu Jul 6 00:07:28 2006 for zypp by  doxygen 1.4.6