krita
kis_resource_mediator.cc00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <koIconChooser.h>
00019
00020 #include "kdebug.h"
00021
00022 #include "kis_icon_item.h"
00023 #include "kis_resource.h"
00024 #include "kis_itemchooser.h"
00025 #include "kis_resourceserver.h"
00026 #include "kis_resource_mediator.h"
00027
00028 KisResourceMediator::KisResourceMediator(KisItemChooser *chooser,
00029 QObject *parent,
00030 const char *name) : super(parent, name), m_chooser(chooser)
00031 {
00032 Q_ASSERT(chooser);
00033 m_activeItem = 0;
00034
00035 connect(m_chooser, SIGNAL(selected(KoIconItem*)), SLOT(setActiveItem(KoIconItem*)));
00036 }
00037
00038 KisResourceMediator::~KisResourceMediator()
00039 {
00040 }
00041
00042 void KisResourceMediator::connectServer(KisResourceServerBase* rServer)
00043 {
00044
00045 QValueList<KisResource*> resources = rServer->resources();
00046 QValueList<KisResource*>::iterator it;
00047 for ( it = resources.begin(); it != resources.end(); ++it )
00048 rServerAddedResource( *it );
00049
00050
00051 connect(rServer, SIGNAL(resourceAdded(KisResource*)),
00052 this, SLOT(rServerAddedResource(KisResource*)));
00053 }
00054
00055 KisResource *KisResourceMediator::currentResource() const
00056 {
00057 if (m_activeItem) {
00058 Q_ASSERT(dynamic_cast<KisIconItem*>(m_activeItem));
00059 return static_cast<KisIconItem*>(m_activeItem)->resource();
00060 }
00061
00062 return 0;
00063 }
00064
00065 KisIconItem *KisResourceMediator::itemFor(KisResource *r) const
00066 {
00067 if(m_items.contains(r))
00068 {
00069 return m_items[r];
00070 }
00071 return 0;
00072 }
00073
00074 KisResource *KisResourceMediator::resourceFor(KoIconItem *item) const
00075 {
00076 KisIconItem *kisitem = dynamic_cast<KisIconItem*>(item);
00077
00078 return kisitem ? kisitem->resource() : 0;
00079 }
00080
00081 KisResource *KisResourceMediator::resourceFor(KisIconItem *item) const
00082 {
00083 return item ? item->resource() : 0;
00084 }
00085
00086 QWidget *KisResourceMediator::chooserWidget() const
00087 {
00088 return m_chooser;
00089 }
00090
00091 void KisResourceMediator::setActiveItem(KoIconItem *item)
00092 {
00093 KisIconItem *kisitem = dynamic_cast<KisIconItem*>(item);
00094
00095 if (kisitem) {
00096 m_activeItem = kisitem;
00097 m_chooser->setCurrent(item);
00098 emit activatedResource(kisitem ? kisitem->resource() : 0);
00099 }
00100 }
00101
00102 void KisResourceMediator::rServerAddedResource(KisResource *resource)
00103 {
00104 if (resource && resource->valid()) {
00105
00106 KisIconItem *item = new KisIconItem(resource);
00107 Q_CHECK_PTR(item);
00108
00109 m_items[resource] = item;
00110
00111 m_chooser->addItem(item);
00112 if (m_activeItem == 0) setActiveItem(item);
00113 }
00114 }
00115
00116 #include "kis_resource_mediator.moc"
00117
|