/* * Copyright 2008-2009 Haiku Inc. All rights reserved. * Distributed under the terms of the MIT license. * * Authors: * Pieter Panman */ #ifndef DEVICESVIEW_H #define DEVICESVIEW_H #include #include #include #include #include #include #include #include "Device.h" #include "DeviceACPI.h" #include "DevicePCI.h" #include "DeviceSCSI.h" #include "DeviceUSB.h" #include "PropertyList.h" static const uint32 kMsgRefresh = 'refr'; static const uint32 kMsgReportCompatibility = 'repo'; static const uint32 kMsgGenerateSysInfo = 'sysi'; static const uint32 kMsgSelectionChanged = 'selc'; static const uint32 kMsgOrderCategory = 'ocat'; static const uint32 kMsgOrderConnection = 'ocon'; typedef enum { ORDER_BY_CONNECTION, ORDER_BY_CATEGORY } OrderByType; typedef std::map CategoryMap; typedef std::map::const_iterator CategoryMapIterator; typedef std::vector Devices; class DevicesView : public BView { public: DevicesView(); ~DevicesView(); virtual void CreateLayout(); virtual void MessageReceived(BMessage* msg); virtual void RescanDevices(); virtual void CreateCategoryMap(); virtual void DeleteCategoryMap(); virtual void DeleteDevices(); virtual void RebuildDevicesOutline(); virtual void AddChildrenToOutlineByConnection(Device* parent); virtual void AddDeviceAndChildren(device_node_cookie* node, Device* parent); static int SortItemsCompare(const BListItem*, const BListItem*); private: BOutlineListView* fDevicesOutline; PropertyList* fAttributesView; BMenuField* fOrderByMenu; Devices fDevices; OrderByType fOrderBy; CategoryMap fCategoryMap; }; #endif /* DEVICESVIEW_H */