class CCL::ServiceListModel

class ServiceListModel: public CCL::ItemModel
{
public:
    // enums

    enum Columns;

    // fields

     IItemModel;

    // methods

    PROPERTY_BOOL (warned, Warned);
    void removeAll ();
    int CCL_API countFlatItems ();
    tbool CCL_API getItemTitle (String& title, ItemIndexRef index);
    tbool CCL_API createColumnHeaders (IColumnHeaderList& list);
    tbool CCL_API drawCell (ItemIndexRef index, int column, const DrawInfo& info);
    tbool CCL_API editCell (ItemIndexRef index, int column, const EditInfo& info);

    tbool CCL_API measureCellContent (
        Rect& size,
        ItemIndexRef index,
        int column,
        const StyleInfo& info
    );
};

Inherited Members

public:
    // typedefs

    typedef CStringRef MemberID;
    typedef const IItemModel::DrawInfo& DrawInfoRef;

    // enums

    enum SwipeMethod;

    // classes

    class BoxedEditInfo;
    class EditControlOperation;
    class ItemVisitor;

    template <typename Lambda>
    class LambdaItemVisitor;

    class SwipeItemsMouseHandler;
    class TouchMouseHandler;

    // fields

    static constexpr const int kDefaultTextTrimMode = Font::kTrimModeRight;
     IItemModel;

    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;
    Unknown& operator = (const Unknown&);
    unsigned int getRetainCount () const;
    virtual Object*CCL_API revealObject (const void* moduleAddress) = 0;
    virtual void CCL_API addObserver (IObserver* observer) = 0;
    virtual void CCL_API removeObserver (IObserver* observer) = 0;
    virtual void CCL_API signal (MessageRef msg) = 0;
    virtual void CCL_API deferSignal (IMessage* msg) = 0;
    static ISubject void addObserver (IUnknown* unknown, IObserver* observer);
    static void removeObserver (IUnknown* unknown, IObserver* observer);
    virtual void CCL_API notify (ISubject* subject, MessageRef msg) = 0;

    static IObserver void notify (
        IUnknown* unknown,
        ISubject* subject,
        MessageRef msg
    );

    virtual const ITypeInfo&CCL_API getTypeInfo () const = 0;
    virtual tbool CCL_API getProperty (Variant& var, MemberID propertyId) const = 0;
    virtual tbool CCL_API setProperty (MemberID propertyId, const Variant& var) = 0;
    virtual tbool CCL_API getPropertyNames (IPropertyCollector& collector) const = 0;
    virtual tbool CCL_API invokeMethod (Variant& returnValue, MessageRef msg) = 0;
    DECLARE_BASE_CLASS (Object);
    virtual void CCL_API removeObserver (IObserver* observer);
    virtual void CCL_API signal (MessageRef msg);
    virtual void CCL_API deferSignal (IMessage* msg);
    virtual void deferChanged ();
    virtual void CCL_API notify (ISubject* subject, MessageRef msg);
    virtual bool equals (const Object& obj) const;
    virtual int compare (const Object& obj) const;
    virtual bool load (const Storage& storage);
    virtual bool save (const Storage& storage) const;
    virtual bool save (const OutputStorage& storage) const;
    virtual bool toString (String& string, int flags = 0) const;
    virtual int getHashCode (int size) const;
    IUnknown* asUnknown ();
    static void addGarbageCollected (Object* obj, bool globalScope = true);
    static void deferDestruction (Object* obj);
    static const void* getModuleAddress ();
    IItemView* getItemView () const;
    const auto& getItemViews () const;
    IItemView* getItemViewByName (StringRef name);
    void makeFirst (IItemView* itemView);
    void makeLast (IItemView* itemView);
    void CCL_API viewAttached (IItemView* itemView);
    void CCL_API viewDetached (IItemView* itemView);

    void drawIcon (
        DrawInfoRef info,
        IImage* icon,
        bool enabled = true,
        bool fitImage = true,
        int margin = 0
    );

    void drawIconWithOverlay (
        DrawInfoRef info,
        IImage* icon,
        IImage* overlay = nullptr,
        bool enabled = true,
        bool fitImage = true,
        int margin = 0
    );

    void drawOverlay (DrawInfoRef info, RectRef iconRect, IImage* overlay);

    void drawButtonImage (
        DrawInfoRef info,
        IImage* image,
        bool pressed,
        bool enabled = true
    );

    void calcCheckBoxRect (
        Rect& checkRect,
        DrawInfoRef info,
        AlignmentRef alignment = Alignment::kHCenter
    );

    void drawCheckBox (
        DrawInfoRef info,
        bool checked,
        bool enabled = true,
        AlignmentRef alignment = Alignment::kHCenter
    );

    void calcButtonRect (
        Rect& buttonRect,
        DrawInfoRef info,
        StringRef title,
        Coord verticalMargin = 0
    );

    void drawButton (
        DrawInfoRef info,
        StringRef title,
        bool enabled = true,
        Coord verticalMargin = 0
    );

    void drawSelectBoxArrow (DrawInfoRef info, bool enabled = true, int margin = 0);
    SolidBrush getTextBrush (DrawInfoRef info, bool enabled);

    void drawTitle (
        DrawInfoRef info,
        StringRef title,
        bool enabled = true,
        int fontStyle = 0,
        AlignmentRef alignment = Alignment::kLeft|Alignment::kVCenter,
        int trimMode = kDefaultTextTrimMode
    );

    void drawText (
        DrawInfoRef info,
        StringRef text,
        AlignmentRef alignment = Alignment::kCenter,
        bool enabled = true,
        int fontStyle = 0,
        Coord margin = 0
    );

    void calcTitleRects (
        Rect& titleRect,
        Rect& subTitleRect,
        DrawInfoRef info,
        Coord spacing
    );

    void drawTitleWithSubtitle (
        DrawInfoRef info,
        StringRef title,
        StringRef subTitle,
        bool enabled = true,
        int fontStyle = 0,
        Coord lineSpacing = 4,
        int trimMode = kDefaultTextTrimMode
    );

    void drawVerticalBar (
        IGraphics& graphics,
        RectRef rect,
        float value,
        Color backColor,
        Color hiliteColor,
        Coord margin = 1
    );

    void drawHorizontalBar (
        IGraphics& graphics,
        RectRef rect,
        float value,
        Color backColor,
        Color hiliteColor,
        Coord margin = 1
    );

    DECLARE_CLASS (ItemModel, Object);
    Object void invalidate ();
    void invalidateItem (ItemIndexRef index);
    void updateColumns ();

    IAsyncOperation* editString (
        StringRef initialValue,
        RectRef rect,
        const EditInfo& info,
        IVisualStyle* visualStyle = nullptr
    );

    IAsyncOperation* editString (
        StringRef initialValue,
        RectRef rect,
        IItemView* view = nullptr,
        IVisualStyle* visualStyle = nullptr
    );

    IAsyncOperation* editValue (
        IParameter* param,
        const EditInfo& info,
        IVisualStyle* visualStyle = nullptr
    );

    IAsyncOperation* startEditOperation (
        IParameter* param,
        ViewBox& editControl,
        const EditInfo& info,
        IVisualStyle* visualStyle = nullptr
    );

    IVisualStyle* createEditStyle ();
    virtual void CCL_API notify (ISubject* subject, MessageRef msg);

    DECLARE_STRINGID_MEMBER (kSwipeEditDone) protected bool doPopupSlider (
        IParameter* param,
        const EditInfo& info,
        PointRef position,
        bool horizontal = false,
        StringID popupSliderDecorForm = nullptr
    );

    bool doPopupColorPalette (
        Color& color,
        IColorPalette* palette,
        const EditInfo& info
    );

    bool setEditControl (ViewBox& editControl, const EditInfo& info);

    bool swipeItems (
        IView* itemView,
        const MouseEvent& mouseEvent,
        ItemVisitor* itemVisitor,
        SwipeMethod method = SwipeMethod::kMultiple
    );

    template  <typename Lambda>
    bool swipeItems (
        IView* itemView,
        const MouseEvent& mouseEvent,
        Lambda visitItem
    );

    template  <typename Lambda>
    bool swipeItemsSingle (
        IView* itemView,
        const MouseEvent& mouseEvent,
        Lambda visitItem
    );

    AbstractTouchHandler* wrapMouseHandler (
        IMouseHandler* mouseHandler,
        IView* view
    );

    virtual tbool CCL_API invokeMethod (Variant& returnValue, MessageRef msg);