Improve formatactionmenu

wilder-work
Montel Laurent 12 years ago
parent a46f6d2a7f
commit d60bc423c2
  1. 19
      tests/displaymessageformatactionmenutest.cpp
  2. 2
      tests/displaymessageformatactionmenutest.h
  3. 29
      widgets/displaymessageformatactionmenu.cpp
  4. 7
      widgets/displaymessageformatactionmenu.h

@ -21,6 +21,7 @@
#include <qtestmouse.h>
#include <KMenu>
#include <KToggleAction>
Q_DECLARE_METATYPE(MessageViewer::Viewer::DisplayFormatMessage)
DisplayMessageFormatActionMenuTest::DisplayMessageFormatActionMenuTest()
{
@ -48,7 +49,23 @@ void DisplayMessageFormatActionMenuTest::shouldEmitSignalWhenClickOnSubMenu()
QSignalSpy spy(&menu, SIGNAL(changeDisplayMessageFormat(MessageViewer::Viewer::DisplayFormatMessage)));
prefereHtml->trigger();
QCOMPARE(spy.count(), 1);
//QCOMPARE(spy.at(0).at(0).toInt(), int(MessageViewer::Viewer::Html));
QCOMPARE(spy.at(0).at(0).value<MessageViewer::Viewer::DisplayFormatMessage>(), MessageViewer::Viewer::Html);
}
void DisplayMessageFormatActionMenuTest::shouldSelectItemWhenChangeFormat()
{
DisplayMessageFormatActionMenu menu;
menu.setDisplayMessageFormat(MessageViewer::Viewer::Text);
KToggleAction *prefereText = qFindChild<KToggleAction *>(&menu, QLatin1String("prefer-text-action"));
QCOMPARE(prefereText->isChecked(), true);
}
void DisplayMessageFormatActionMenuTest::shouldDontEmitSignalWhenChangeFormat()
{
DisplayMessageFormatActionMenu menu;
QSignalSpy spy(&menu, SIGNAL(changeDisplayMessageFormat(MessageViewer::Viewer::DisplayFormatMessage)));
menu.setDisplayMessageFormat(MessageViewer::Viewer::Text);
QCOMPARE(spy.count(), 0);
}
QTEST_KDEMAIN(DisplayMessageFormatActionMenuTest, GUI)

@ -28,6 +28,8 @@ public:
private Q_SLOTS:
void shouldHaveDefaultValue();
void shouldEmitSignalWhenClickOnSubMenu();
void shouldSelectItemWhenChangeFormat();
void shouldDontEmitSignalWhenChangeFormat();
};
#endif // DISPLAYMESSAGEFORMATACTIONMENUTEST_H

@ -21,10 +21,12 @@
#include <KAction>
#include <KMenu>
#include <KToggleAction>
#include <QDebug>
DisplayMessageFormatActionMenu::DisplayMessageFormatActionMenu(QObject *parent)
: KActionMenu(parent)
: KActionMenu(parent),
mDisplayMessageFormat(MessageViewer::Viewer::UseGlobalSetting)
{
setText(i18n("Message Default Format"));
KMenu *subMenu = new KMenu;
@ -49,10 +51,10 @@ DisplayMessageFormatActionMenu::DisplayMessageFormatActionMenu(QObject *parent)
act = new KToggleAction(i18n("Use KMail global setting"), this);
act->setObjectName(QLatin1String("use-global-setting-action"));
act->setData(MessageViewer::Viewer::UseGlobalSetting);
act->setChecked(true);
connect(act, SIGNAL(triggered(bool)), this, SLOT(slotChangeDisplayMessageFormat()));
actionGroup->addAction(act);
subMenu->addAction(act);
updateMenu();
}
@ -71,3 +73,26 @@ void DisplayMessageFormatActionMenu::slotChangeDisplayMessageFormat()
}
}
}
MessageViewer::Viewer::DisplayFormatMessage DisplayMessageFormatActionMenu::displayMessageFormat() const
{
return mDisplayMessageFormat;
}
void DisplayMessageFormatActionMenu::setDisplayMessageFormat(MessageViewer::Viewer::DisplayFormatMessage displayMessageFormat)
{
if (mDisplayMessageFormat != displayMessageFormat) {
mDisplayMessageFormat = displayMessageFormat;
updateMenu();
}
}
void DisplayMessageFormatActionMenu::updateMenu()
{
Q_FOREACH (QAction *act, menu()->actions()) {
MessageViewer::Viewer::DisplayFormatMessage format = static_cast<MessageViewer::Viewer::DisplayFormatMessage>(act->data().toInt());
if (format == mDisplayMessageFormat) {
act->setChecked(true);
break;
}
}
}

@ -29,11 +29,18 @@ public:
explicit DisplayMessageFormatActionMenu(QObject *parent=0);
~DisplayMessageFormatActionMenu();
MessageViewer::Viewer::DisplayFormatMessage displayMessageFormat() const;
void setDisplayMessageFormat(MessageViewer::Viewer::DisplayFormatMessage displayMessageFormat);
Q_SIGNALS:
void changeDisplayMessageFormat(MessageViewer::Viewer::DisplayFormatMessage format);
private slots:
void slotChangeDisplayMessageFormat();
private:
void updateMenu();
MessageViewer::Viewer::DisplayFormatMessage mDisplayMessageFormat;
};
#endif // DisplayMessageFormatActionMenu_H

Loading…
Cancel
Save