#ifndef SCROLLAREA_H
#define SCROLLAREA_H
+#include "fullscreenexitbutton.h"
+
#include <QScrollArea>
#include <QLabel>
#include <QTimer>
//fixes tearing during scrolling and can display messages
class ScrollArea : public QScrollArea
{
+ Q_OBJECT
public:
explicit ScrollArea(QWidget *parent):
- QScrollArea(parent) {
- message.setParent(this);
+ QScrollArea(parent),
+ message(this),
+ fullscreen_exit_button(parent) //owned by parent!
+ {
message.setVisible(false);
message.setAlignment(Qt::AlignCenter);
message.setWordWrap(true);
message.setAutoFillBackground(true);
message_timer.setSingleShot(true);
- message_timer.setInterval(2500);
+ message_timer.setInterval(4000);
connect(&message_timer, SIGNAL(timeout()),
&message, SLOT(hide()));
+ connect(&fullscreen_exit_button, SIGNAL(clicked()),
+ this, SIGNAL(fullscreenButtonClicked()));
+
+ button_reenable_timer.setSingleShot(true);
+ button_reenable_timer.setInterval(500);
+ connect(&button_reenable_timer, SIGNAL(timeout()),
+ &fullscreen_exit_button, SLOT(reenable()));
+
#ifdef Q_WS_MAEMO_5
// disable overshooting because it somehow causes repaint events for the whole widget (slow)
QAbstractKineticScroller *scroller = property("kineticScroller").value<QAbstractKineticScroller *>();
#endif
}
+public slots:
void showMessage(const QString &s) {
message.setText(s);
message.show();
message_timer.start();
}
+
+ //provided for convenience
+ void showMessage(QString /*title*/, QString msg) { showMessage(msg); }
+
+signals:
+ void fullscreenButtonClicked();
protected:
virtual void resizeEvent(QResizeEvent* ev) {
QScrollArea::resizeEvent(ev);
}
virtual void scrollContentsBy(int dx, int dy) {
QScrollArea::scrollContentsBy(dx, dy);
- if(widget())
- message.hide(); //overlay-widget slows down scrolling
+ if(widget()) {
+ //overlay-widgets slow down scrolling
+ message.hide();
+ fullscreen_exit_button.hide();
+ fullscreen_exit_button.setEnabled(false);
+ button_reenable_timer.start();
+ }
}
private:
QLabel message;
QTimer message_timer;
+ FullScreenExitButton fullscreen_exit_button;
+ QTimer button_reenable_timer;
};
#endif