[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdesdk/lokalize/src
From: Nickolai Shaforostoff <shafff () ukr ! net>
Date: 2009-05-25 23:48:52
Message-ID: 1243295332.256376.18287.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 972910 by shaforo:
BUG: 192992
do not unfuzzy plural messages so easily
the custom behaviour is there only for first edit (i.e. messages are unfuzzied easily \
after you edited all of them even if you make them fuzzy again), but I guess this is \
anough (and was easy to implement ;) )
M +2 -2 binunitsview.cpp
M +1 -1 binunitsview.h
M +14 -2 catalog/catalog.cpp
M +2 -1 catalog/catalog.h
M +2 -1 catalog/catalog_private.h
M +2 -2 catalog/cmd.cpp
M +9 -0 catalog/pos.h
M +21 -7 xlifftextedit.cpp
M +1 -0 xlifftextedit.h
--- trunk/KDE/kdesdk/lokalize/src/binunitsview.cpp #972909:972910
@@ -169,7 +169,7 @@
m_view->setRootIsDecorated(false);
m_view->setAlternatingRowColors(true);
m_view->viewport()->setBackgroundRole(QPalette::Background);
- connect(m_view,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(mouseDoubleClickEvent(QModelIndex)));
+ connect(m_view,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(mouseDoubleClicked(QModelIndex)));
connect(catalog,SIGNAL(signalFileLoaded()),this,SLOT(fileLoaded()));
}
@@ -218,7 +218,7 @@
event->accept();
}
-void BinUnitsView::mouseDoubleClickEvent(const QModelIndex& item)
+void BinUnitsView::mouseDoubleClicked(const QModelIndex& item)
{
//FIXME child processes don't notify us about changes ;(
if (item.column()<BinUnitsModel::Approved)
--- trunk/KDE/kdesdk/lokalize/src/binunitsview.h #972909:972910
@@ -49,7 +49,7 @@
private:
void contextMenuEvent(QContextMenuEvent *event);
private slots:
- void mouseDoubleClickEvent(const QModelIndex&);
+ void mouseDoubleClicked(const QModelIndex&);
void fileLoaded();
private:
--- trunk/KDE/kdesdk/lokalize/src/catalog/catalog.cpp #972909:972910
@@ -830,7 +830,7 @@
if (m_storage) m_storage->setEquivTrans(pos, equivTrans);
}
-bool Catalog::setModified(int entry, bool modified)
+bool Catalog::setModified(DocPos entry, bool modified)
{
if (modified)
{
@@ -843,11 +843,23 @@
return true;
}
-bool Catalog::isModified(int entry) const
+bool Catalog::isModified(DocPos entry) const
{
return d->_modifiedEntries.contains(entry);
}
+bool Catalog::isModified(int entry) const
+{
+ if (!isPlural(entry))
+ return isModified(DocPos(entry,0));
+
+ int f=numberOfPluralForms();
+ while(--f>=0)
+ if (isModified(DocPos(entry,f)))
+ return true;
+ return false;
+}
+
//END UNDO/REDO
--- trunk/KDE/kdesdk/lokalize/src/catalog/catalog.h #972909:972910
@@ -131,6 +131,7 @@
///@returns true if at least one form is untranslated
bool isEmpty(uint index) const;
bool isEmpty(const DocPosition&) const;
+ bool isModified(DocPos entry) const;
bool isModified(int entry) const;
/// so DocPosition::entry may actually be < size()+binUnitsCount()
@@ -221,7 +222,7 @@
void setEquivTrans(const DocPosition&, bool equivTrans);
/// @returns true if entry wasn't modified before
- bool setModified(int entry, bool modif);
+ bool setModified(DocPos entry, bool modif);
protected:
CatalogPrivate *d;
--- trunk/KDE/kdesdk/lokalize/src/catalog/catalog_private.h #972909:972910
@@ -40,6 +40,7 @@
#include "catalogitem.h"
#include "projectlocal.h"
#include "state.h"
+#include "pos.h"
#include <kurl.h>
#include <kautosavefile.h>
@@ -102,7 +103,7 @@
//keeps pos of the entry that was last modified
DocPosition _lastModifiedPos;
- QSet<int> _modifiedEntries;//just for the nice gui
+ QSet<DocPos> _modifiedEntries;//just for the nice gui
QString _phase;
ProjectLocal::PersonRole _phaseRole;
--- trunk/KDE/kdesdk/lokalize/src/catalog/cmd.cpp #972909:972910
@@ -52,7 +52,7 @@
{
setJumpingPos();
doRedo();
- _firstModificationForThisEntry=_catalog->setModified(_pos.entry,true);
+ _firstModificationForThisEntry=_catalog->setModified(DocPos(_pos),true);
_prevPhase=setPhaseForPart(_catalog,_catalog->activePhase(),_pos,DocPosition::UndefPart);
}
@@ -61,7 +61,7 @@
setJumpingPos();
doUndo();
if (_firstModificationForThisEntry)
- _catalog->setModified(_pos.entry,false);
+ _catalog->setModified(DocPos(_pos),false);
setPhaseForPart(_catalog,_prevPhase,_pos,DocPosition::UndefPart);
}
--- trunk/KDE/kdesdk/lokalize/src/catalog/pos.h #972909:972910
@@ -25,6 +25,7 @@
#define POS_H
#include <QMetaType>
+#include <QHash>
class Catalog;
@@ -106,4 +107,12 @@
};
+
+inline uint qHash(const DocPos &key)
+{
+ return qHash((key.entry<<8)|key.form);
+}
+
+
+
#endif
--- trunk/KDE/kdesdk/lokalize/src/xlifftextedit.cpp #972909:972910
@@ -385,8 +385,7 @@
else _leds->ledUntr->off();
}
*/
- if (!m_catalog->isApproved(m_currentPos.entry)&&Settings::autoApprove())
- emit toggleApprovementRequested();
+ requestToggleApprovement();
reflectUntranslatedState();
// for mergecatalog (remove entry from index)
@@ -404,8 +403,7 @@
if (!::removeTargetSubstring(m_catalog, m_currentPos, delStart, delLen))
return false;
- if (!m_catalog->isApproved(m_currentPos.entry))
- emit toggleApprovementRequested();
+ requestToggleApprovement();
if (refresh)
{
@@ -632,7 +630,7 @@
if (KDE_ISUNLIKELY( !m_catalog->isApproved(m_currentPos.entry) && \
!textCursor().hasSelection() )
&& \
((textCursor().atStart()&&keyEvent->key()==Qt::Key_Backspace)
\
||(textCursor().atEnd()&&keyEvent->key()==Qt::Key_Delete) ))
- emit toggleApprovementRequested();
+ requestToggleApprovement();
else
KTextEdit::keyPressEvent(keyEvent);
}
@@ -1003,8 +1001,7 @@
showPos(m_currentPos,sourceWithTags,/*keepCursor*/false);
- if (KDE_ISUNLIKELY( \
!m_catalog->isApproved(pos.entry)&&Settings::autoApprove() ))
- emit toggleApprovementRequested();
+ requestToggleApprovement();
}
else
{
@@ -1015,7 +1012,24 @@
}
}
+void XliffTextEdit::requestToggleApprovement()
+{
+ if (m_catalog->isApproved(m_currentPos.entry)||!Settings::autoApprove())
+ return;
+ bool skip=m_catalog->isPlural(m_currentPos);
+ if (skip)
+ {
+ skip=false;
+ DocPos pos(m_currentPos);
+ for (pos.form=0;pos.form<m_catalog->numberOfPluralForms();pos.form++)
+ skip=skip||!m_catalog->isModified(pos);
+ }
+ if (!skip)
+ emit toggleApprovementRequested();
+}
+
+
void XliffTextEdit::cursorToStart()
{
QTextCursor t=textCursor();
--- trunk/KDE/kdesdk/lokalize/src/xlifftextedit.h #972909:972910
@@ -76,6 +76,7 @@
int strForMicePosIfUnderTag(QPoint mice, CatalogString& str);
+ void requestToggleApprovement();
private slots:
//for Undo/Redo tracking
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic