[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeutils/okteta/program/oktetakakao/controllers/view/stringsextract
From: Friedrich W. H. Kossebau <kossebau () kde ! org>
Date: 2008-06-30 23:19:05
Message-ID: 1214867945.966503.24159.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 826557 by kossebau:
fixed: tracking of string sources finally works, Update button now activated only if \
useful
M +40 -19 stringsextracttool.cpp
M +12 -5 stringsextracttool.h
M +14 -13 stringsextractview.cpp
M +1 -1 stringsextractview.h
--- trunk/KDE/kdeutils/okteta/program/oktetakakao/controllers/view/stringsextract/stringsextracttool.cpp \
#826556:826557 @@ -39,20 +39,21 @@
static const int DefaultMinLength = 3;
StringsExtractTool::StringsExtractTool()
- : mCharCodec( KHECore::KCharCodec::createCodec(KHECore::LocalEncoding) ), \
mMinLength( DefaultMinLength ),
- mByteArrayView( 0 ), mByteArrayModel( 0 ), mSourceByteArrayModel( 0 )
+ : mExtractedStringsUptodate( false ), mSourceByteArrayModelUptodate( false ),
+ mCharCodec( KHECore::KCharCodec::createCodec(KHECore::LocalEncoding) ), \
mMinLength( DefaultMinLength ), + mByteArrayView( 0 ), mByteArrayModel( 0 ), \
mSourceByteArrayModel( 0 ), mSourceMinLength( 0 ) {
}
bool StringsExtractTool::isApplyable() const
{
- return ( mByteArrayModel != 0 && mByteArrayView->hasSelectedData() );
+ return ( mByteArrayModel != 0 && mByteArrayView->hasSelectedData() && mMinLength \
> 0 ); }
-bool StringsExtractTool::isSelectable() const
+bool StringsExtractTool::canHighlightString() const
{
return ( mSourceByteArrayModel == mByteArrayModel
- && mByteArrayView && mByteArrayView->selection() == mSourceSelection );
+ && mByteArrayView && mSourceByteArrayModelUptodate );
}
// TODO: add model with offset and string
@@ -63,7 +64,6 @@
void StringsExtractTool::setView( KAbstractView *view )
{
if( mByteArrayView ) mByteArrayView->disconnect( this );
- if( mByteArrayModel ) mByteArrayModel->disconnect( this );
mByteArrayView = view ? static_cast<KHEUI::KByteArrayView *>( view->widget() ) : \
0;
@@ -75,22 +75,24 @@
connect( mByteArrayView, SIGNAL(charCodecChanged( const QString & )),
SLOT(setCharCodec( const QString &)) );
connect( mByteArrayView, SIGNAL(selectionChanged( bool )),
- SIGNAL(isApplyableChanged( bool )) );
+ SLOT(onSelectionChanged( bool )) );
setCharCodec( mByteArrayView->encodingName() );
}
// TODO: if there is no view, there is nothing to extract.
// or this could be the view where we got the strings from and it did not change
+ checkUptoDate();
+ emit uptodateChanged( mExtractedStringsUptodate );
emit isApplyableChanged( isApplyable() );
- emit isSelectableChanged( isSelectable() );
+ emit canHighlightStringChanged( canHighlightString() );
}
void StringsExtractTool::setMinLength( int minLength )
{
mMinLength = minLength;
- mUptodate = false;
- emit uptodateChanged( false );
+ checkUptoDate();
+ emit uptodateChanged( mExtractedStringsUptodate );
}
void StringsExtractTool::setCharCodec( const QString &codecName )
@@ -102,6 +104,15 @@
mCharCodec = KHECore::KCharCodec::createCodec( codecName );
}
+void StringsExtractTool::checkUptoDate()
+{
+ mExtractedStringsUptodate =
+ ( mSourceByteArrayModel == mByteArrayModel
+ && mByteArrayView && mSourceSelection == mByteArrayView->selection()
+ && mSourceMinLength == mMinLength
+ && mSourceByteArrayModelUptodate );
+}
+
void StringsExtractTool::selectString( int stringId )
{
const ContainedString &containedString = mContainedStringList.at(stringId);
@@ -111,11 +122,21 @@
mByteArrayView->setFocus();
}
-void StringsExtractTool::onSourceModified()
+void StringsExtractTool::onSelectionChanged( bool hasSelection )
{
- mUptodate = false;
+// TODO: could be quicker
+Q_UNUSED( hasSelection )
+ checkUptoDate();
+ emit uptodateChanged( mExtractedStringsUptodate );
+ emit isApplyableChanged( isApplyable() );
+}
+
+void StringsExtractTool::onSourceChanged()
+{
+ mExtractedStringsUptodate = false;
+ mSourceByteArrayModelUptodate = false;
emit uptodateChanged( false );
- emit isSelectableChanged( false );
+ emit canHighlightStringChanged( false );
}
@@ -137,14 +158,14 @@
// remember new string source
mSourceByteArrayModel = mByteArrayModel;
mSourceSelection = mByteArrayView->selection();
- connect( mSourceByteArrayModel, SIGNAL(modificationChanged( bool )),
- SLOT(onSourceModified()) );
- connect( mByteArrayView, SIGNAL(selectionChanged( bool )),
- SLOT(onSourceModified()) );
+ mSourceMinLength = mMinLength;
+ connect( mSourceByteArrayModel, SIGNAL(contentsChanged( const \
KHE::ArrayChangeMetricsList & )), + SLOT(onSourceChanged()) );
- mUptodate = true;
+ mExtractedStringsUptodate = true;
+ mSourceByteArrayModelUptodate = true;
emit uptodateChanged( true );
- emit isSelectableChanged( true );
+ emit canHighlightStringChanged( true );
}
--- trunk/KDE/kdeutils/okteta/program/oktetakakao/controllers/view/stringsextract/stringsextracttool.h \
#826556:826557 @@ -59,7 +59,7 @@
int minLength() const;
bool isApplyable() const; // candidate for AbstractTool API
bool isUptodate() const;
- bool isSelectable() const;
+ bool canHighlightString() const;
public Q_SLOTS: // settings
void setCharCodec( const QString &codecName );
@@ -70,16 +70,21 @@
void extractStrings();
public Q_SLOTS: // actions
- void onSourceModified();
+ void onSelectionChanged( bool hasSelection );
+ void onSourceChanged();
Q_SIGNALS:
void uptodateChanged( bool isUptodate );
void isApplyableChanged( bool isApplyable ); // candidate for AbstractTool API
- void isSelectableChanged( bool isSelectable );
+ void canHighlightStringChanged( bool canHighlightString );
+ protected:
+ void checkUptoDate();
+
protected: // created data
QList<ContainedString> mContainedStringList;
- bool mUptodate;
+ bool mExtractedStringsUptodate:1;
+ bool mSourceByteArrayModelUptodate:1;
protected: // settings
KHECore::KCharCodec *mCharCodec;
@@ -94,10 +99,12 @@
KHE::KSection mSourceSelection;
// source of strings
KHECore::KAbstractByteArrayModel *mSourceByteArrayModel;
+ // minLength source
+ int mSourceMinLength;
};
inline const QList<ContainedString> *StringsExtractTool::containedStringList() const \
{ return &mContainedStringList; } inline int StringsExtractTool::minLength() \
const { return mMinLength; }
-inline bool StringsExtractTool::isUptodate() const { return mUptodate; }
+inline bool StringsExtractTool::isUptodate() const { return \
mExtractedStringsUptodate; }
#endif
--- trunk/KDE/kdeutils/okteta/program/oktetakakao/controllers/view/stringsextract/stringsextractview.cpp \
#826556:826557 @@ -42,6 +42,7 @@
#include <QtGui/QClipboard>
#include <QtGui/QApplication>
+
static const int MinimumStringLength = 1;
StringsExtractView::StringsExtractView( StringsExtractTool *tool, QWidget *parent )
@@ -150,7 +151,7 @@
connect( mTool, SIGNAL(uptodateChanged( bool )), SLOT(onStringsUptodateChanged( \
bool )) );
connect( mTool, SIGNAL(isApplyableChanged( bool )), SLOT( onApplyableChanged( \
bool )) );
- connect( mTool, SIGNAL(isSelectableChanged( bool )), SLOT(onIsSelectableChanged( \
bool )) ); + connect( mTool, SIGNAL(canHighlightStringChanged( bool )), \
SLOT(onCanHighlightStringChanged( bool )) );
onStringSelectionChanged();
}
@@ -167,22 +168,22 @@
if( stringsUptodate )
mContainedStringTableModel->update();
- mUpdateButton->setEnabled( !stringsUptodate && mTool->isApplyable() );
+ const bool isApplyable = mTool->isApplyable();
+ mUpdateButton->setEnabled( !stringsUptodate && isApplyable );
}
void StringsExtractView::onApplyableChanged( bool isApplyable )
{
- mUpdateButton->setEnabled( isApplyable );
+ mUpdateButton->setEnabled( !mTool->isUptodate() && isApplyable );
}
-void StringsExtractView::onIsSelectableChanged( bool isSelectable )
+void StringsExtractView::onCanHighlightStringChanged( bool canHighlightString )
{
- const bool hasCurrent = \
mContainedStringTableView->selectionModel()->currentIndex().isValid();
- mGotoButton->setEnabled( isSelectable && hasCurrent );
+ const bool stringSelected = \
mContainedStringTableView->selectionModel()->currentIndex().isValid(); + \
mGotoButton->setEnabled( canHighlightString && stringSelected ); }
-
void StringsExtractView::onGotoButtonClicked()
{
const QModelIndex index = \
mContainedStringTableView->selectionModel()->currentIndex(); @@ -192,11 +193,11 @@
void StringsExtractView::onCopyButtonClicked()
{
- const QModelIndexList selectedIndexes = \
mContainedStringTableView->selectionModel()->selectedRows(); + const \
QModelIndexList selectedRows = \
mContainedStringTableView->selectionModel()->selectedRows();
const QList<ContainedString> *containedStringList = \
mTool->containedStringList();
QString strings;
- foreach( const QModelIndex &index, selectedIndexes )
+ foreach( const QModelIndex &index, selectedRows )
{
const int i = mSortFilterProxyModel->mapToSource(index).row();
strings += ( containedStringList->at( i ).string() + '\n' ); //TODO: \
specific linefeed for platforms @@ -211,14 +212,14 @@
const bool hasSelection = selectionModel->hasSelection();
mCopyButton->setEnabled( hasSelection );
- const bool hasCurrent = selectionModel->currentIndex().isValid();
- const bool isSelectable = mTool->isSelectable();
- mGotoButton->setEnabled( isSelectable && hasCurrent );
+ const bool stringSelected = selectionModel->isSelected( \
selectionModel->currentIndex() ); + const bool canHighlightString = \
mTool->canHighlightString(); + mGotoButton->setEnabled( canHighlightString && \
stringSelected ); }
void StringsExtractView::onStringDoubleClicked( const QModelIndex &index )
{
- if( mTool->isSelectable() )
+ if( mTool->canHighlightString() )
mTool->selectString( mSortFilterProxyModel->mapToSource(index).row() );
}
--- trunk/KDE/kdeutils/okteta/program/oktetakakao/controllers/view/stringsextract/stringsextractview.h \
#826556:826557 @@ -54,7 +54,7 @@
public Q_SLOTS: // tool
void onStringsUptodateChanged( bool stringUptodate );
void onApplyableChanged( bool isApplyable );
- void onIsSelectableChanged( bool isSelectable );
+ void onCanHighlightStringChanged( bool isSelectable );
private:
StringsExtractTool *mTool;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic