48 BubbleImageManager& imageManager, QObject* parent) |
48 BubbleImageManager& imageManager, QObject* parent) |
49 : QObject(parent), mImageManager(imageManager), |
49 : QObject(parent), mImageManager(imageManager), |
50 mOrientation(Qt::Vertical) |
50 mOrientation(Qt::Vertical) |
51 { |
51 { |
52 // .docml mappings |
52 // .docml mappings |
53 mFileNames.insert(SingleCallView,":/xml/bubble_layout_1.docml"); |
53 mFileNames.insert(SingleCallView, |
54 mFileNames.insert(TwoCallsView, ":/xml/bubble_layout_2.docml"); |
54 QLatin1String(":/xml/bubble_layout_1.docml")); |
55 mFileNames.insert(ThreeCallsView,":/xml/bubble_layout_3.docml"); |
55 mFileNames.insert(TwoCallsView, |
56 mFileNames.insert(ConferenceView,":/xml/bubble_layout_4.docml"); |
56 QLatin1String(":/xml/bubble_layout_2.docml")); |
57 mFileNames.insert(MutedOverlay, ":/xml/bubble_layout_5.docml"); |
57 mFileNames.insert(ThreeCallsView, |
58 |
58 QLatin1String(":/xml/bubble_layout_3.docml")); |
59 mOrientationName.insert(Qt::Vertical, "portrait"); |
59 mFileNames.insert(ConferenceView, |
60 mOrientationName.insert(Qt::Horizontal, "landscape"); |
60 QLatin1String(":/xml/bubble_layout_4.docml")); |
61 |
61 mFileNames.insert(MutedOverlay, |
62 mWidgetPrefix.insert(ExpandedBubble, "eb:"); |
62 QLatin1String(":/xml/bubble_layout_5.docml")); |
63 mWidgetPrefix.insert(CollapsedBubble, "cb:"); |
63 |
64 mWidgetPrefix.insert(CollapsedBubble2, "cb2:"); |
64 mOrientationName.insert(Qt::Vertical, QLatin1String("portrait")); |
65 mContainerName.insert(ExpandedBubble, "expandedBubble"); |
65 mOrientationName.insert(Qt::Horizontal, QLatin1String("landscape")); |
66 mContainerName.insert(CollapsedBubble, "collapsedBubble"); |
66 |
67 mContainerName.insert(CollapsedBubble2, "collapsedBubble2"); |
67 mWidgetPrefix.insert(ExpandedBubble, QLatin1String("eb:")); |
68 mWidgetName.insert(Heading, "bubbleHeading"); |
68 mWidgetPrefix.insert(CollapsedBubble, QLatin1String("cb:")); |
69 mWidgetName.insert(Image, "callImage"); |
69 mWidgetPrefix.insert(CollapsedBubble2, QLatin1String("cb2:")); |
70 mWidgetName.insert(LeftButton, "leftButton"); |
70 mContainerName.insert(ExpandedBubble, QLatin1String("expandedBubble")); |
71 mWidgetName.insert(CenterButton, "centerButton"); |
71 mContainerName.insert(CollapsedBubble, QLatin1String("collapsedBubble")); |
72 mWidgetName.insert(RightButton, "rightButton"); |
72 mContainerName.insert(CollapsedBubble2, QLatin1String("collapsedBubble2")); |
73 mWidgetName.insert(ConferenceTimer,"callTimer"); |
73 mWidgetName.insert(Heading, QLatin1String("bubbleHeading")); |
74 mWidgetName.insert(ParticipantList,"participantList"); |
74 mWidgetName.insert(Image, QLatin1String("callImage")); |
75 mWidgetName.insert(MutedIcon, "mutedIcon"); |
75 mWidgetName.insert(LeftButton, QLatin1String("leftButton")); |
|
76 mWidgetName.insert(CenterButton, QLatin1String("centerButton")); |
|
77 mWidgetName.insert(RightButton, QLatin1String("rightButton")); |
|
78 mWidgetName.insert(ParticipantList, QLatin1String("participantList")); |
|
79 mWidgetName.insert(MutedIcon, QLatin1String("mutedIcon")); |
76 } |
80 } |
77 |
81 |
78 BubbleWidgetManager::~BubbleWidgetManager() |
82 BubbleWidgetManager::~BubbleWidgetManager() |
79 { |
83 { |
80 qDeleteAll(mDocumentLoaders); |
84 qDeleteAll(mDocumentLoaders); |
97 // load from .docml |
101 // load from .docml |
98 return loadDocument(view,mOrientation); |
102 return loadDocument(view,mOrientation); |
99 } |
103 } |
100 } |
104 } |
101 |
105 |
|
106 bool BubbleWidgetManager::isLoaded(View view) |
|
107 { |
|
108 if (mDocumentContent.contains(view)) { |
|
109 return true; |
|
110 } else { |
|
111 return false; |
|
112 } |
|
113 } |
|
114 |
102 void BubbleWidgetManager::releaseView(View view) |
115 void BubbleWidgetManager::releaseView(View view) |
103 { |
116 { |
104 Q_UNUSED(view) |
117 Q_UNUSED(view) |
|
118 |
|
119 // release loaders |
|
120 BubbleDocumentLoader* loader = mDocumentLoaders.value(view,0); |
|
121 delete loader; |
|
122 mDocumentLoaders.remove(view); |
|
123 |
|
124 // release handler |
|
125 QList<BubbleHandler*>* handlers = mDocumentHandlers.value(view,0); |
|
126 if (handlers) { |
|
127 qDeleteAll(*handlers); |
|
128 delete handlers; |
|
129 mDocumentHandlers.remove(view); |
|
130 } |
|
131 |
|
132 // release document objects |
|
133 QObjectList objectList = mDocumentObjects.value(view); |
|
134 foreach(QObject* object, objectList) { |
|
135 QMetaObject::invokeMethod(object, "deleteLater", Qt::QueuedConnection); |
|
136 } |
|
137 mDocumentObjects.remove(view); |
|
138 mDocumentContent.remove(view); |
105 } |
139 } |
106 |
140 |
107 QGraphicsWidget* BubbleWidgetManager::loadDocument( |
141 QGraphicsWidget* BubbleWidgetManager::loadDocument( |
108 View view, |
142 View view, |
109 Qt::Orientation orientation) |
143 Qt::Orientation orientation) |
110 { |
144 { |
111 BubbleDocumentLoader* loader = |
145 BubbleDocumentLoader* loader = |
112 new BubbleDocumentLoader(mImageManager); |
146 new BubbleDocumentLoader(mImageManager); |
113 bool ok; |
147 bool ok; |
114 |
148 |
115 loader->load(mFileNames[view],&ok); |
149 QObjectList objectList = loader->load(mFileNames[view],&ok); |
116 Q_ASSERT(ok); |
150 Q_ASSERT(ok); |
117 loader->load(mFileNames[view],mOrientationName[orientation],&ok); |
151 loader->load(mFileNames[view],mOrientationName[orientation],&ok); |
118 Q_ASSERT(ok); |
152 Q_ASSERT(ok); |
119 |
153 |
120 mDocumentLoaders.insert(view,loader); |
154 mDocumentLoaders.insert(view,loader); |
|
155 mDocumentObjects.insert(view,objectList); |
121 |
156 |
122 QGraphicsWidget* widget = |
157 QGraphicsWidget* widget = |
123 mDocumentLoaders[view]->findWidget(BUBBLE_DOCUMENT_CONTENT); |
158 mDocumentLoaders[view]->findWidget(BUBBLE_DOCUMENT_CONTENT); |
124 |
159 |
125 Q_ASSERT(widget); |
160 Q_ASSERT(widget); |