/* This file is part of the KDE project Copyright (C) 2003 Jaroslaw Staniek This program is free software; you can redistribute it and,or modify it under the terms of the GNU Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. Loosely based on kdevelop/src/statusbar.cpp Copyright (C) 2001 by Bernd Gehrmann */ #include "kexistatusbar.h" #include #include #include #include #include #include #include #include #include #if KexiStatusBar_KTEXTEDITOR_USED #include #include #endif KexiStatusBar::KexiStatusBar(TQWidget *parent, const char *name) : KStatusBar(parent, name) #if KexiStatusBar_KTEXTEDITOR_USED , m_cursorIface(0) #endif , m_activePart(0) { int id = 0; m_msgID = id++; insertItem("", m_msgID, 1, true); m_readOnlyID = id++; insertFixedItem(i18n("Read only"), m_readOnlyID, true); setReadOnlyFlag(false); // @todo // connect(PartController::getInstance(), TQT_SIGNAL(activePartChanged(KParts::Part*)), // this, TQT_SLOT(activePartChanged(KParts::Part*))); /// @todo remove parts from the map on PartRemoved() ? } KexiStatusBar::~KexiStatusBar() { } void KexiStatusBar::activePartChanged(KParts::Part *part) { if ( m_activePart && m_activePart->widget() ) disconnect( m_activePart->widget(), 0, this, 0 ); m_activePart = part; #if KexiStatusBar_KTEXTEDITOR_USED m_cursorIface = 0; m_viewmsgIface = 0; // @todo if (part && part->widget()) { if ((m_viewmsgIface = dynamic_cast(part->widget()))) { connect( part->widget(), TQT_SIGNAL( viewStatusMsg( const TQString & ) ), this, TQT_SLOT( settqStatus( const TQString & ) ) ); # if KDE_VERSION < KDE_MAKE_VERSION(3,1,90) changeItem(m_map[ m_activePart ], m_msgID); // m_status->setText( m_map[ m_activePart ] ); # endif } else if ((m_cursorIface = dynamic_cast(part->widget()))) { connect(part->widget(), TQT_SIGNAL(cursorPositionChanged()), this, TQT_SLOT(cursorPositionChanged())); cursorPositionChanged(); } else { // we can't produce any status data, hide the status box changeItem("", m_msgID); } } #endif } void KexiStatusBar::cursorPositionChanged() { #if KexiStatusBar_KTEXTEDITOR_USED if (m_cursorIface) { uint line, col; m_cursorIface->cursorPosition(&line, &col); setCursorPosition(line, col); } #endif } void KexiStatusBar::settqStatus(const TQString &str) { kdDebug() << "KexiStatusBar::setStatus(" << str << ")" << endl; // m_status->setText(str); changeItem(str, m_msgID); #if defined(KDE_MAKE_VERSION) # if KDE_VERSION < KDE_MAKE_VERSION(3,1,90) m_map[m_activePart] = str; # endif #endif } void KexiStatusBar::setCursorPosition(int line, int col) { // m_status->setText(i18n(" Line: %1 Col: %2 ").tqarg(line+1).tqarg(col)); changeItem(i18n(" Line: %1 Col: %2 ").tqarg(line+1).tqarg(col), m_msgID); } /*void KexiStatusBar::addWidget ( TQWidget *widget, int stretch, bool permanent) { KStatusBar::addWidget(widget,stretch,permanent); if(widget->tqsizeHint().height() + 4 > height()) setFixedHeight(widget->tqsizeHint().height() + 4); }*/ void KexiStatusBar::setReadOnlyFlag(bool readOnly) { changeItem(readOnly ? i18n("Read only") : TQString(), m_readOnlyID); } #include "kexistatusbar.moc"