Diff
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui (14573 => 14574)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui 2009-08-19 23:28:41 UTC (rev 14573)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui 2009-08-20 01:59:48 UTC (rev 14574)
@@ -76,8 +76,6 @@
<property name="title">
<string>&Console</string>
</property>
- <addaction name="actionAutomatic_Scroll"/>
- <addaction name="separator"/>
<addaction name="actionRealtime_Statistics"/>
</widget>
<addaction name="menu_File"/>
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp (14573 => 14574)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp 2009-08-19 23:28:41 UTC (rev 14573)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp 2009-08-20 01:59:48 UTC (rev 14574)
@@ -29,8 +29,6 @@
this, SLOT(clearLogContents()));
QObject::connect(consoleWindow->actionRealtime_Statistics, SIGNAL(triggered()),
this, SLOT(showRealtimeStats()));
- QObject::connect(consoleWindow->actionAutomatic_Scroll, SIGNAL(toggled(bool)),
- this, SLOT(setAutoScroll(bool)));
}
ConsolePlugin::~ConsolePlugin(){}
@@ -409,44 +407,29 @@
void ConsolePlugin::tabChanged(int index)
{
ESLconnection *esl = hashESL.value(consoleWindow->tabConsole->tabText(index), NULL);
- ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget *>(consoleWindow->tabConsole->currentWidget());
if (esl)
{
consoleWindow->action_Connect->setDisabled(esl->isConnected());
consoleWindow->action_Disconnect->setEnabled(esl->isConnected());
- consoleWindow->actionAutomatic_Scroll->setChecked(tab->getAutomaticScroll());
- consoleWindow->actionAutomatic_Scroll->setEnabled(esl->isConnected());
- tab->flipScrollTimer();
}
}
void ConsolePlugin::connect()
{
ESLconnection *esl = hashESL.value(consoleWindow->tabConsole->tabText(consoleWindow->tabConsole->currentIndex()), NULL);
- ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget *>(consoleWindow->tabConsole->currentWidget());
if (esl)
{
esl->connect();
- tab->flipScrollTimer();
}
}
void ConsolePlugin::disconnect()
{
ESLconnection *esl = hashESL.value(consoleWindow->tabConsole->tabText(consoleWindow->tabConsole->currentIndex()), NULL);
- ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget *>(consoleWindow->tabConsole->currentWidget());
if (esl)
{
esl->disconnect();
- tab->flipScrollTimer();
}
}
-void ConsolePlugin::setAutoScroll(bool checked)
-{
- ConsoleTabWidget *tab = qobject_cast<ConsoleTabWidget *>(consoleWindow->tabConsole->currentWidget());
- tab->setAutomaticScroll(checked);
- tab->flipScrollTimer();
-}
-
Q_EXPORT_PLUGIN2(consoleplugin, ConsolePlugin)
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h (14573 => 14574)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h 2009-08-19 23:28:41 UTC (rev 14573)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h 2009-08-20 01:59:48 UTC (rev 14574)
@@ -53,7 +53,6 @@
void changeDebugForegroundColor();
void tabClose(int index);
void tabChanged(int index);
- void setAutoScroll(bool checked);
void readSettings();
void writeSettings();
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp (14573 => 14574)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp 2009-08-19 23:28:41 UTC (rev 14573)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp 2009-08-20 01:59:48 UTC (rev 14574)
@@ -8,10 +8,8 @@
QWidget(parent),
m_ui(new Ui::ConsoleTabWidget),
esl(eslconnection),
- scrollTimer(new QTimer),
_rtStatsDlg(NULL),
- findNext(false),
- autoScroll(true)
+ findNext(false)
{
m_ui->setupUi(this);
sourceModel = new QStandardItemModel(this);
@@ -57,13 +55,16 @@
QObject::connect(esl, SIGNAL(receivedLogMessage(ESLevent)),
this, SLOT(gotEvent(ESLevent)));
- QObject::connect(scrollTimer, SIGNAL(timeout()),
- this, SLOT(conditionalScroll()));
esl->connect();
msm = new MonitorStateMachine();
msm->addESLconnection(esl);
+
+ scrollTimer = new QBasicTimer;
+ scrollTimer->start(0, this);
+ /* Number of items to be inserted */
+ batch = 40;
}
ConsoleTabWidget::~ConsoleTabWidget()
@@ -88,36 +89,25 @@
}
}
-void ConsoleTabWidget::flipScrollTimer()
+void ConsoleTabWidget::timerEvent(QTimerEvent *e)
{
- if (!esl->isConnected())
+ bool scroll = false;
+ if (e->timerId() == scrollTimer->timerId())
{
- scrollTimer->stop();
- return;
- }
+ if (m_ui->consoleListView->verticalScrollBar()->value() == m_ui->consoleListView->verticalScrollBar()->maximum())
+ scroll = true;
- if (scrollTimer->isActive())
- scrollTimer->stop();
- else if (autoScroll)
- scrollTimer->start(500);
+ int inserted_items = 0;
+ while( !_list_items.isEmpty() && inserted_items < batch)
+ {
+ sourceModel->appendRow(_list_items.takeFirst());
+ inserted_items++;
+ }
+ if (scroll)
+ m_ui->consoleListView->scrollToBottom();
+ }
}
-void ConsoleTabWidget::setAutomaticScroll(bool enabled)
-{
- autoScroll = enabled;
-}
-
-bool ConsoleTabWidget::getAutomaticScroll()
-{
- return autoScroll;
-}
-
-void ConsoleTabWidget::conditionalScroll()
-{
- if (autoScroll)
- m_ui->consoleListView->scrollToBottom();
-}
-
void ConsoleTabWidget::filterClear()
{
m_ui->lineFilter->clear();
@@ -195,7 +185,8 @@
QPalette palette = settings.value(QString("log-level-%1-palette").arg(item->data(Qt::UserRole).toInt())).value<QPalette>();
item->setBackground(palette.base());
item->setForeground(palette.text());
- sourceModel->appendRow(item);
+ //sourceModel->appendRow(item);
+ _list_items.append(item);
}
void ConsoleTabWidget::cmdSendClicked()
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h (14573 => 14574)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h 2009-08-19 23:28:41 UTC (rev 14573)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h 2009-08-20 01:59:48 UTC (rev 14574)
@@ -25,12 +25,10 @@
public slots:
void clearConsoleContents();
void showRealtimeStats();
- void flipScrollTimer();
- void setAutomaticScroll(bool enabled);
- bool getAutomaticScroll();
protected:
void changeEvent(QEvent *e);
+ void timerEvent(QTimerEvent *);
private slots:
void conditionalScroll();
@@ -56,12 +54,13 @@
QStandardItemModel *sourceModel;
QModelIndexList foundItems;
SortFilterProxyModel *model;
+ QBasicTimer *scrollTimer;
ESLconnection *esl;
- QTimer *scrollTimer;
MonitorStateMachine *msm;
RealtimeStatisticsDialog *_rtStatsDlg;
bool findNext;
- bool autoScroll;
+ QList<QStandardItem *> _list_items;
+ int batch;
};