X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=widgets%2Fdyalog.cpp;h=baea41adef8c5b0790152c89e3834327462b128e;hb=9c9936e2a864609fbd121c98147a15a11919917b;hp=d9ba0a5870c44caea3a392cb25d4ec67d26dab94;hpb=3268128a73077e9c931804b4d564f9dfe7353805;p=dorian diff --git a/widgets/dyalog.cpp b/widgets/dyalog.cpp index d9ba0a5..baea41a 100644 --- a/widgets/dyalog.cpp +++ b/widgets/dyalog.cpp @@ -1,26 +1,42 @@ #include #include "dyalog.h" +#include "trace.h" + +#ifdef Q_OS_SYMBIAN +#include "flickcharm.h" +#endif Dyalog::Dyalog(QWidget *parent, bool showButtons_): QDialog(parent, Qt::Dialog | Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint), showButtons(showButtons_) { + setAttribute(Qt::WA_DeleteOnClose); + scroller = new QScrollArea(this); -#ifdef Q_WS_MAEMO_5 +#if defined(Q_WS_MAEMO_5) scroller->setProperty("FingerScrollable", true); scroller->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); +#elif defined(Q_OS_SYMBIAN) + FlickCharm *charm = new FlickCharm(this); + charm->activateOn(scroller); #else scroller->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); #endif scroller->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scroller->setFrameStyle(QFrame::NoFrame); +#if defined(Q_OS_SYMBIAN) + // setStyleSheet("QFrame {margin:0; border:0; padding:0}"); + setStyleSheet("QScrollArea {margin:0; border:0; padding:0}"); +#endif content = new QWidget(scroller); contentLayout = new QVBoxLayout(content); +#if !defined(Q_OS_SYMBIAN) contentLayout->setMargin(0); +#endif content->setLayout(contentLayout); QBoxLayout *boxLayout; @@ -40,6 +56,9 @@ Dyalog::Dyalog(QWidget *parent, bool showButtons_): #endif boxLayout = new QHBoxLayout(this); } +#if defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) + boxLayout->setMargin(0); +#endif boxLayout->addWidget(scroller); #ifndef Q_OS_SYMBIAN if (showButtons) { @@ -57,7 +76,8 @@ Dyalog::Dyalog(QWidget *parent, bool showButtons_): closeAction->setSoftKeyRole(QAction::NegativeSoftKey); connect(closeAction, SIGNAL(triggered()), this, SLOT(reject())); addAction(closeAction); - menu = 0; + leftSoftKey = 0; + menuBar = 0; #endif // Q_OS_SYMBIAN } @@ -74,20 +94,32 @@ void Dyalog::addStretch(int stretch) void Dyalog::addButton(const QString &label, QObject *receiver, const char *slot, QDialogButtonBox::ButtonRole role) { + TRACE; if (!showButtons) { + qDebug() << "Ignored: showButtons is false"; return; } #ifdef Q_OS_SYMBIAN Q_UNUSED(role); - if (!menu) { - QAction *menuAction = new QAction(tr("Options"), this); - menuAction->setSoftKeyRole(QAction::PositiveSoftKey); - menu = new QMenu(this); - menuAction->setMenu(menu); + if (!leftSoftKey) { + // Add new action as left softkey + leftSoftKey = new QAction(label, this); + leftSoftKey->setSoftKeyRole(QAction::PositiveSoftKey); + connect(leftSoftKey, SIGNAL(triggered()), receiver, slot); + addAction(leftSoftKey); + } else { + if (!menuBar) { + // Create menu bar + menuBar = new QMenuBar(this); + // Add previous LSK to menu bar + leftSoftKey->setSoftKeyRole(QAction::NoSoftKey); + menuBar->addAction(leftSoftKey); + } + // Add new action to menu bar + QAction *action = new QAction(label, this); + connect(action, SIGNAL(triggered()), receiver, slot); + menuBar->addAction(action); } - QAction *action = new QAction(label, this); - connect(action, SIGNAL(triggered()), receiver, slot); - menu->addAction(action); #else QPushButton *button = new QPushButton(label, this); connect(button, SIGNAL(clicked()), receiver, slot); @@ -102,7 +134,7 @@ void Dyalog::show() foreach (QWidget *w, QApplication::allWidgets()) { w->setContextMenuPolicy(Qt::NoContextMenu); } - showMaximized(); + QDialog::showMaximized(); } int Dyalog::exec()