[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdevplatform/plugins/standardoutputview
From: Andreas Pakulat <apaku () gmx ! de>
Date: 2008-04-24 21:40:09
Message-ID: 1209073209.081472.12061.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 800813 by apaku:
Implement the 3 types of output's, currently uses a tabwidget for the
multi-output but I have plans to change that soon to a list.
M +117 -26 outputwidget.cpp
M +29 -26 outputwidget.h
--- trunk/KDE/kdevplatform/plugins/standardoutputview/outputwidget.cpp #800812:800813
@@ -28,24 +28,37 @@
#include <QtGui/QListView>
#include <QtGui/QToolButton>
#include <QtGui/QScrollBar>
+#include <QtGui/QVBoxLayout>
+#include <QtGui/QStackedWidget>
#include <kmenu.h>
#include <kdebug.h>
#include <klocale.h>
#include <kicon.h>
+#include <ktabwidget.h>
#include "toolviewdata.h"
OutputWidget::OutputWidget(QWidget* parent, ToolViewData* tvdata)
- : KTabWidget( parent ), data(tvdata)
+ : QWidget( parent ), tabwidget(0), data(tvdata)
{
setWindowTitle(i18n("Output View"));
- m_closeButton = new QToolButton( this );
- connect( m_closeButton, SIGNAL( clicked() ),
- this, SLOT( closeActiveView() ) );
- m_closeButton->setIcon( KIcon("tab-close") );
- m_closeButton->adjustSize();
- m_closeButton->setToolTip( i18n( "Close the currently active output view") );
- setCornerWidget( m_closeButton, Qt::TopRightCorner );
+ QVBoxLayout* layout = new QVBoxLayout(this);
+ if( data->type & KDevelop::IOutputView::MultipleView )
+ {
+ tabwidget = new KTabWidget(this);
+ layout->addWidget( tabwidget );
+ m_closeButton = new QToolButton( this );
+ connect( m_closeButton, SIGNAL( clicked() ),
+ this, SLOT( closeActiveView() ) );
+ m_closeButton->setIcon( KIcon("tab-close") );
+ m_closeButton->adjustSize();
+ m_closeButton->setToolTip( i18n( "Close the currently active output view") \
); + tabwidget->setCornerWidget( m_closeButton, Qt::TopRightCorner );
+ } else if ( data->type == KDevelop::IOutputView::HistoryView )
+ {
+ stackwidget = new QStackedWidget( this );
+ layout->addWidget( stackwidget );
+ }
connect( data, SIGNAL( outputAdded( int ) ),
this, SLOT( addOutput( int ) ) );
@@ -71,6 +84,17 @@
connect( data->outputdata.value(id), SIGNAL(delegateChanged(int)), this, \
SLOT(changeDelegate(int))); }
+void OutputWidget::setCurrentWidget( QListView* view )
+{
+ if( data->type & KDevelop::IOutputView::MultipleView )
+ {
+ tabwidget->setCurrentWidget( view );
+ } else if( data->type & KDevelop::IOutputView::HistoryView )
+ {
+ stackwidget->setCurrentWidget( view );
+ }
+}
+
void OutputWidget::changeDelegate( int id )
{
kDebug(9500) << "delegate changed for id:" << id;
@@ -104,20 +128,33 @@
{
if( data->outputdata.contains( id ) && views.contains( id ) )
{
- QListView* w = views.value(id);
- int idx = indexOf( w );
- if( idx != -1 )
+ if( data->type & KDevelop::IOutputView::MultipleView || data->type & \
KDevelop::IOutputView::HistoryView ) {
- removeTab( idx );
+ QListView* w = views.value(id);
+ if( data->type & KDevelop::IOutputView::MultipleView )
+ {
+ int idx = tabwidget->indexOf( w );
+ if( idx != -1 )
+ {
+ tabwidget->removeTab( idx );
+ }
+ } else
+ {
+ stackwidget->removeWidget( w );
+ }
delete w;
- emit outputRemoved( data->toolViewId, id );
+ } else
+ {
+ views.value( id )->setModel( 0 );
+ views.value( id )->setItemDelegate( 0 );
}
+ emit outputRemoved( data->toolViewId, id );
}
}
void OutputWidget::closeActiveView()
{
- QWidget* widget = currentWidget();
+ QWidget* widget = tabwidget->currentWidget();
if( !widget )
return;
foreach( int id, views.keys() )
@@ -133,9 +170,26 @@
}
}
+QWidget* OutputWidget::currentWidget()
+{
+ QWidget* widget;
+ if( data->type & KDevelop::IOutputView::MultipleView )
+ {
+ widget = tabwidget->currentWidget();
+ } else if( data->type & KDevelop::IOutputView::MultipleView )
+ {
+ widget = stackwidget->currentWidget();
+ } else
+ {
+ widget = views.begin().value();
+ }
+ return widget;
+}
+
void OutputWidget::selectNextItem()
{
QWidget* widget = currentWidget();
+
if( !widget || !widget->isVisible() )
return;
QAbstractItemView *view = dynamic_cast<QAbstractItemView*>(widget);
@@ -200,16 +254,43 @@
{
if( !views.contains(id) )
{
- kDebug(9500) << "creating listview";
- QListView* listview = new QListView(this);
- listview->setEditTriggers( QAbstractItemView::NoEditTriggers );
- views[id] = listview;
- connect( listview, SIGNAL(activated(const QModelIndex&)),
- this, SLOT(activate(const QModelIndex&)));
- connect( listview, SIGNAL(clicked(const QModelIndex&)),
- this, SLOT(activate(const QModelIndex&)));
+ QListView* listview = 0;
+ if( data->type & KDevelop::IOutputView::MultipleView || data->type & \
KDevelop::IOutputView::HistoryView ) + {
+ kDebug(9500) << "creating listview";
+ listview = new QListView(this);
+ listview->setEditTriggers( QAbstractItemView::NoEditTriggers );
+ views[id] = listview;
+ connect( listview, SIGNAL(activated(const QModelIndex&)),
+ this, SLOT(activate(const QModelIndex&)));
+ connect( listview, SIGNAL(clicked(const QModelIndex&)),
+ this, SLOT(activate(const QModelIndex&)));
- addTab( listview, data->outputdata.value(id)->title );
+ if( data->type & KDevelop::IOutputView::MultipleView )
+ {
+ tabwidget->addTab( listview, data->outputdata.value(id)->title );
+ } else
+ {
+ stackwidget->addWidget( listview );
+ stackwidget->setCurrentWidget( listview );
+ }
+ } else
+ {
+ if( views.isEmpty() )
+ {
+ listview = new QListView(this);
+ listview->setEditTriggers( QAbstractItemView::NoEditTriggers );
+ layout()->addWidget( listview );
+ connect( listview, SIGNAL(activated(const QModelIndex&)),
+ this, SLOT(activate(const QModelIndex&)));
+ connect( listview, SIGNAL(clicked(const QModelIndex&)),
+ this, SLOT(activate(const QModelIndex&)));
+ } else
+ {
+ listview = views.begin().value();
+ }
+ views[id] = listview;
+ }
changeModel( id );
changeDelegate( id );
return listview;
@@ -223,10 +304,20 @@
{
if( views.contains(id) )
{
- int idx = indexOf( views.value(id) );
- if( idx >= 0 )
+ if( data->type & KDevelop::IOutputView::MultipleView )
{
- setCurrentIndex( idx );
+ int idx = tabwidget->indexOf( views.value(id) );
+ if( idx >= 0 )
+ {
+ tabwidget->setCurrentIndex( idx );
+ }
+ } else if( data->type & KDevelop::IOutputView::HistoryView )
+ {
+ int idx = stackwidget->indexOf( views.value(id) );
+ if( idx >= 0 )
+ {
+ tabwidget->setCurrentIndex( idx );
+ }
}
}
}
--- trunk/KDE/kdevplatform/plugins/standardoutputview/outputwidget.h #800812:800813
@@ -22,42 +22,45 @@
#ifndef OUTPUTWIDGET_H
#define OUTPUTWIDGET_H
-#include <ktabwidget.h>
+#include <QtGui/QWidget>
#include <QtCore/QMap>
-class QAbstractItemModel;
class QString;
class StandardOutputView;
-class OutputViewCommand;
-class QModelIndex;
+class QStackedWidget;
class QListView;
class QToolButton;
-class QScrollBar;
class ToolViewData;
+class KTabWidget;
+class QModelIndex;
-class OutputWidget : public KTabWidget
+class OutputWidget : public QWidget
{
- Q_OBJECT
- public:
- OutputWidget(QWidget* parent, ToolViewData* data);
- void removeOutput( int id );
- void raiseOutput( int id );
- public Q_SLOTS:
- void addOutput( int id );
- void changeModel( int id );
- void changeDelegate( int id );
- void closeActiveView();
- void selectNextItem();
- void selectPrevItem();
- void activate(const QModelIndex&);
+Q_OBJECT
+public:
+ OutputWidget(QWidget* parent, ToolViewData* data);
+ void removeOutput( int id );
+ void raiseOutput( int id );
+public Q_SLOTS:
+ void addOutput( int id );
+ void changeModel( int id );
+ void changeDelegate( int id );
+ void closeActiveView();
+ void selectNextItem();
+ void selectPrevItem();
+ void activate(const QModelIndex&);
- Q_SIGNALS:
- void outputRemoved( int, int );
- private:
- QListView* createListView(int id);
+Q_SIGNALS:
+ void outputRemoved( int, int );
+private:
+ QListView* createListView(int id);
+ void setCurrentWidget( QListView* view );
+ QWidget* currentWidget();
- QMap<int, QListView*> views;
- ToolViewData* data;
- QToolButton* m_closeButton;
+ QMap<int, QListView*> views;
+ KTabWidget* tabwidget;
+ QStackedWidget* stackwidget;
+ ToolViewData* data;
+ QToolButton* m_closeButton;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic