summaryrefslogtreecommitdiffstats
path: root/tests/auto/qundostack
diff options
context:
space:
mode:
authorAlexander Potashev <aspotashev@gmail.com>2011-05-09 10:39:18 +0200
committerOlivier Goffart <olivier.goffart@nokia.com>2011-05-10 12:54:56 +0200
commit342d2a253ca14d9d8dff843f682661d4933d1dd3 (patch)
tree939a60581f49a553b375d935c85419059a75a325 /tests/auto/qundostack
parentec4d346f95de4933b660d5ce005751abdced4c7d (diff)
Allow different text for undo actions and items in QUndoView
Now the texts used for undo actions and for items in QUndoView can be set separately. This introduces an extended format of text that can be passed to QUndoCommand::setText or QUndoCommand constructor. The action text can now contain two strings separated by a "\n". The first string (that goes before "\n") is then returned by QUndoCommand::text() and used as name of item in QUndoView. The second string (that goes after "\n") is returned by QUndoCommand::actionText() and used when the text properties of the undo and redo actions are updated. If the text passed to QUndoCommand does not contain "\n", everything works as before, and both QUndoCommand::text() and QUndoCommand::actionText() return the same string. Even though action text in English usually does not need different forms for undo actions and QUndoView item, translators can employ this new command text format, for example to adjust the grammatical case used in command text to match the context of "Undo %1"/"Redo %1". Merge-request: 2610 Reviewed-by: ossi (cherry picked from commit 9b784789c75d59b27530bbf1d12676cc44f64f46)
Diffstat (limited to 'tests/auto/qundostack')
-rw-r--r--tests/auto/qundostack/tst_qundostack.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/auto/qundostack/tst_qundostack.cpp b/tests/auto/qundostack/tst_qundostack.cpp
index bcab43d4af..5aea0a15d3 100644
--- a/tests/auto/qundostack/tst_qundostack.cpp
+++ b/tests/auto/qundostack/tst_qundostack.cpp
@@ -101,6 +101,16 @@ private:
QString m_text;
};
+class IdleCommand : public QUndoCommand
+{
+public:
+ IdleCommand(QUndoCommand *parent = 0);
+ ~IdleCommand();
+
+ virtual void undo();
+ virtual void redo();
+};
+
InsertCommand::InsertCommand(QString *str, int idx, const QString &text,
QUndoCommand *parent)
: QUndoCommand(parent)
@@ -201,6 +211,26 @@ bool AppendCommand::mergeWith(const QUndoCommand *other)
return true;
}
+IdleCommand::IdleCommand(QUndoCommand *parent)
+ : QUndoCommand(parent)
+{
+ // "idle-item" goes to QUndoStack::{redo,undo}Text
+ // "idle-action" goes to all other places (e.g. QUndoView)
+ setText("idle-item\nidle-action");
+}
+
+IdleCommand::~IdleCommand()
+{
+}
+
+void IdleCommand::redo()
+{
+}
+
+void IdleCommand::undo()
+{
+}
+
/******************************************************************************
** tst_QUndoStack
*/
@@ -221,6 +251,7 @@ private slots:
void compression();
void undoLimit();
void commandTextFormat();
+ void separateUndoText();
};
tst_QUndoStack::tst_QUndoStack()
@@ -2970,6 +3001,34 @@ void tst_QUndoStack::commandTextFormat()
qApp->removeTranslator(&translator);
}
+void tst_QUndoStack::separateUndoText()
+{
+ QUndoStack stack;
+ QAction *undo_action = stack.createUndoAction(0);
+ QAction *redo_action = stack.createRedoAction(0);
+
+ QUndoCommand *command1 = new IdleCommand();
+ QUndoCommand *command2 = new IdleCommand();
+ stack.push(command1);
+ stack.push(command2);
+ stack.undo();
+
+ QCOMPARE(undo_action->text(), QString("Undo idle-action"));
+ QCOMPARE(redo_action->text(), QString("Redo idle-action"));
+ QCOMPARE(command1->actionText(), QString("idle-action"));
+
+ QCOMPARE(command1->text(), QString("idle-item"));
+ QCOMPARE(stack.text(0), QString("idle-item"));
+
+ command1->setText("idle");
+ QCOMPARE(command1->actionText(), QString("idle"));
+ QCOMPARE(command1->text(), QString("idle"));
+
+ command1->setText("idle-item\nidle-action");
+ QCOMPARE(command1->actionText(), QString("idle-action"));
+ QCOMPARE(command1->text(), QString("idle-item"));
+}
+
QTEST_MAIN(tst_QUndoStack)
#include "tst_qundostack.moc"