diff options
Diffstat (limited to 'kivio/kiviopart/kivio_zoomaction.cpp')
| -rw-r--r-- | kivio/kiviopart/kivio_zoomaction.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/kivio/kiviopart/kivio_zoomaction.cpp b/kivio/kiviopart/kivio_zoomaction.cpp new file mode 100644 index 000000000..cfec4aea6 --- /dev/null +++ b/kivio/kiviopart/kivio_zoomaction.cpp @@ -0,0 +1,97 @@ +/* + * Kivio - Visual Modelling and Flowcharting + * Copyright (C) 2000-2001 theKompany.com & Dave Marotti + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "kivio_zoomaction.h" +#include "tkcombobox.h" +#include <qregexp.h> + +#include <klocale.h> + +using namespace Kivio; + +ZoomAction::ZoomAction(QObject* parent, const char* name) +: TKSelectAction(parent,name) +{ + setEditable(true); + QStringList lst; + lst << i18n("%1%").arg("33"); + lst << i18n("%1%").arg("50"); + lst << i18n("%1%").arg("75"); + lst << i18n("%1%").arg("100"); + lst << i18n("%1%").arg("125"); + lst << i18n("%1%").arg("150"); + lst << i18n("%1%").arg("200"); + lst << i18n("%1%").arg("250"); + lst << i18n("%1%").arg("350"); + lst << i18n("%1%").arg("400"); + lst << i18n("%1%").arg("450"); + lst << i18n("%1%").arg("500"); + setItems(lst); +} + +ZoomAction::~ZoomAction() +{ +} + +void ZoomAction::slotActivated( const QString& text ) +{ + QRegExp regexp("(\\d+)"); // "Captured" non-empty sequence of digits + regexp.search(text); + bool ok=false; + // Use templates, not macro to avoid to call the functiosn many times. + const int zoom=kMin(10000,kMax(10,regexp.cap(1).toInt(&ok))); + insertItem(zoom); + + emit zoomActivated(zoom); +} + +void ZoomAction::insertItem( int zoom ) +{ + // This code is taken from KWords changeZoomMenu + QValueList<int> list; + bool ok; + const QStringList itemsList(items()); + QRegExp regexp("(\\d+)"); // "Captured" non-empty sequence of digits + + for (QStringList::ConstIterator it = itemsList.begin() ; it != itemsList.end() ; ++it) { + regexp.search(*it); + const int val=regexp.cap(1).toInt(&ok); + //zoom : limit inferior=10 + if(ok && val>9 && list.contains(val)==0) + list.append( val ); + } + //necessary at the beginning when we read config + //this value is not in combo list + if(list.contains(zoom)==0) + list.append( zoom ); + + qHeapSort( list ); + + QStringList lst; + for (QValueList<int>::Iterator it = list.begin() ; it != list.end() ; ++it) + lst.append( i18n("%1%").arg(*it) ); + setItems(lst); + setCurrentItem(lst.findIndex(i18n("%1%").arg(zoom))); +} + +void ZoomAction::setEditZoom( int zoom ) +{ + const QString zt(i18n("%1%").arg(zoom)); + setEditText(zt); +} +#include "kivio_zoomaction.moc" |
