summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdriano Rezende <adriano.rezende@openbossa.org>2009-11-27 11:56:20 -0300
committerAdriano Rezende <adriano.rezende@openbossa.org>2009-11-27 12:03:22 -0300
commitcdc1419bf4b010ee9b820956e284f372423fc585 (patch)
tree0597f19b4454e497e4ffbd8ffb25b1e134d61b5e
parent0918869c200bfe203fc59aae78b2d41826884002 (diff)
HyperUI: Adjusted menu to keep dialer alive
-rw-r--r--hyperui/menuview.cpp6
-rw-r--r--hyperui/menuview.h3
-rw-r--r--hyperui/pageview.cpp8
-rw-r--r--hyperui/pageview.h3
4 files changed, 16 insertions, 4 deletions
diff --git a/hyperui/menuview.cpp b/hyperui/menuview.cpp
index fa34193..4eda89d 100644
--- a/hyperui/menuview.cpp
+++ b/hyperui/menuview.cpp
@@ -84,6 +84,10 @@ MenuView::MenuView(QGraphicsItem *parent)
m_mainIconIPos, SLOT(onPhoneClicked()));
createStateMachine();
+
+ // keep always alive to reduce transition time
+ m_phoneView = new PhoneView();
+ m_phoneView->setParent(this);
}
Button *MenuView::addIcon(const QPixmap &pixmap, const QPointF &pos,
@@ -100,7 +104,7 @@ Button *MenuView::addIcon(const QPixmap &pixmap, const QPointF &pos,
void MenuView::onPhoneClicked()
{
- pageView()->add(new PhoneView());
+ pageView()->add(m_phoneView, true);
}
void MenuView::createStateMachine()
diff --git a/hyperui/menuview.h b/hyperui/menuview.h
index 7c73d82..d557816 100644
--- a/hyperui/menuview.h
+++ b/hyperui/menuview.h
@@ -34,6 +34,7 @@
#include "view.h"
+class PhoneView;
class QAbstractAnimation;
@@ -68,6 +69,8 @@ protected:
Button *m_btnCamera;
Button *m_btnPhone;
+ PhoneView *m_phoneView;
+
void createStateMachine();
QAbstractAnimation *createInOutAnimation(bool out);
diff --git a/hyperui/pageview.cpp b/hyperui/pageview.cpp
index 1d2c25f..3f3812d 100644
--- a/hyperui/pageview.cpp
+++ b/hyperui/pageview.cpp
@@ -138,12 +138,13 @@ PageView::PageView(QGraphicsItem *parent)
m_newSlot->setPos(0, m_topOffset);
}
-bool PageView::add(View *view)
+bool PageView::add(View *view, bool keepAlive)
{
if (!view || isAnimating())
return false;
view->setPageView(this);
+ m_keepAlive[view] = keepAlive;
if (m_views.isEmpty()) {
m_views.push(view);
@@ -200,7 +201,10 @@ void PageView::transitionFinished()
if (m_isBack) {
m_oldSlot->setContents(0);
- delete oldView;
+ bool keepAlive = m_keepAlive[oldView];
+ m_keepAlive.remove(oldView);
+ if (!keepAlive)
+ delete oldView;
} else {
oldView->hide();
m_views.push(newView);
diff --git a/hyperui/pageview.h b/hyperui/pageview.h
index 1a6b82e..130e9eb 100644
--- a/hyperui/pageview.h
+++ b/hyperui/pageview.h
@@ -49,7 +49,7 @@ class PageView : public QGraphicsWidget
public:
PageView(QGraphicsItem *parent = 0);
- bool add(View *view);
+ bool add(View *view, bool keepAlive = false);
bool back();
bool isAnimating() const;
@@ -71,6 +71,7 @@ private:
bool m_isAnimating;
QStack<View *> m_views;
+ QHash<View *, bool> m_keepAlive;
PageMenu *m_menu;
Button *m_backButton;