00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef KORG_RESOURCEVIEW_H
00026 #define KORG_RESOURCEVIEW_H
00027
00028 #include "calendarview.h"
00029
00030 #include <tqlistview.h>
00031
00032 namespace KCal {
00033 class CalendarResources;
00034 class ResourceCalendar;
00035 }
00036 using namespace KCal;
00037 class KListView;
00038 class ResourceView;
00039 class TQPushButton;
00040
00041 class ResourceViewFactory : public CalendarViewExtension::Factory
00042 {
00043 public:
00044 ResourceViewFactory( CalendarResources *calendar, CalendarView *view );
00045
00046 CalendarViewExtension *create( TQWidget * );
00047
00048 ResourceView *resourceView() const;
00049
00050 private:
00051 CalendarResources *mCalendar;
00052 CalendarView *mCalendarView;
00053 ResourceView *mResourceView;
00054 };
00055
00056
00057 class ResourceItem : public TQCheckListItem
00058 {
00059 public:
00060 ResourceItem( ResourceCalendar *resource, ResourceView *view, KListView *parent );
00061 ResourceItem( ResourceCalendar *resource, const TQString &identifier,
00062 const TQString &label, ResourceView *view, ResourceItem *parent );
00063
00064 ResourceCalendar *resource() { return mResource; }
00065 const TQString& resourceIdentifier() { return mResourceIdentifier; }
00066 bool isSubresource() const { return mIsSubresource; }
00067 void createSubresourceItems();
00068 void setStandardResource( bool std );
00069 void update();
00070
00071 virtual void paintCell(TQPainter *p, const TQColorGroup &cg,
00072 int column, int width, int alignment);
00073
00074 void setResourceColor(TQColor& color);
00075 TQColor &resourceColor() {return mResourceColor;}
00076
00077 protected:
00078 void stateChange( bool active );
00079 void setGuiState();
00080 TQColor mResourceColor;
00081
00082 private:
00083 ResourceCalendar *mResource;
00084 ResourceView *mResourceView;
00085 bool mBlockStateChange;
00086 bool mIsSubresource;
00087 TQString mResourceIdentifier;
00088 bool mSubItemsCreated;
00089 bool mIsStandardResource;
00090 };
00091
00095 class ResourceView : public CalendarViewExtension
00096 {
00097 Q_OBJECT
00098 TQ_OBJECT
00099 public:
00100 ResourceView( CalendarResources *calendar, CalendarView *view,
00101 TQWidget *parent = 0, const char *name = 0 );
00102 ~ResourceView();
00103
00104 CalendarResources *calendar() const { return mCalendar; }
00105
00106 void updateView();
00107
00108 void emitResourcesChanged();
00109
00110 void requestClose( ResourceCalendar *resource );
00111
00112 void showButtons( bool visible );
00113
00114 public slots:
00115 void addResourceItem( ResourceCalendar *resource );
00116 void updateResourceItem( ResourceCalendar *resource );
00117
00118 signals:
00119 void resourcesChanged();
00120
00121 protected:
00122 ResourceItem *findItem( ResourceCalendar *resource );
00123 ResourceItem *findItemByIdentifier( const TQString &identifier );
00124 ResourceItem *currentItem();
00125
00126 protected slots:
00127 void addResource();
00128 void removeResource();
00129 void editResource();
00130 void currentChanged( TQListViewItem *lvitem );
00131 void slotSubresourceAdded( ResourceCalendar *resource, const TQString &type,
00132 const TQString &identifier, const TQString &label );
00133
00134 void slotSubresourceRemoved( ResourceCalendar *resource, const TQString &type,
00135 const TQString &identifier );
00136 void closeResource( ResourceCalendar *resource );
00137
00138 void contextMenuRequested ( TQListViewItem *lvitem, const TQPoint &pos, int );
00139
00140 void assignColor();
00141 void disableColor();
00142 void showInfo();
00143
00144 void reloadResource();
00145 void saveResource();
00146
00147 void setStandard();
00148 void updateResourceList();
00149
00150 private:
00151 KListView *mListView;
00152 CalendarResources *mCalendar;
00153 CalendarView *mCalendarView;
00154 TQPushButton *mAddButton;
00155 TQPushButton *mDeleteButton;
00156 TQPushButton *mEditButton;
00157 TQPtrList<ResourceCalendar> mResourcesToClose;
00158 };
00159
00160 #endif