Diff
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui (14493 => 14494)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui 2009-08-12 04:11:33 UTC (rev 14493)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/centralWidget.ui 2009-08-12 04:48:37 UTC (rev 14494)
@@ -72,9 +72,16 @@
<addaction name="action_Clear"/>
<addaction name="separator"/>
</widget>
+ <widget class="QMenu" name="menu_Console">
+ <property name="title">
+ <string>&Console</string>
+ </property>
+ <addaction name="actionAutomatic_Scroll"/>
+ </widget>
<addaction name="menu_File"/>
<addaction name="menu_Edit"/>
<addaction name="menu_Server"/>
+ <addaction name="menu_Console"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="action_Connect">
@@ -111,6 +118,17 @@
<string>&Clear</string>
</property>
</action>
+ <action name="actionAutomatic_Scroll">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&Automatic Scroll</string>
+ </property>
+ </action>
</widget>
<resources>
<include location="../../resources/resources.qrc"/>
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp (14493 => 14494)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp 2009-08-12 04:11:33 UTC (rev 14493)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.cpp 2009-08-12 04:48:37 UTC (rev 14494)
@@ -27,6 +27,8 @@
this, SLOT(disconnect()));
QObject::connect(consoleWindow->action_Clear, SIGNAL(triggered()),
this, SLOT(clearLogContents()));
+ QObject::connect(consoleWindow->actionAutomatic_Scroll, SIGNAL(toggled(bool)),
+ this, SLOT(setAutoScroll(bool)));
}
ConsolePlugin::~ConsolePlugin(){}
@@ -396,29 +398,44 @@
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 (14493 => 14494)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h 2009-08-12 04:11:33 UTC (rev 14493)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoleplugin.h 2009-08-12 04:48:37 UTC (rev 14494)
@@ -51,6 +51,7 @@
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 (14493 => 14494)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp 2009-08-12 04:11:33 UTC (rev 14493)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.cpp 2009-08-12 04:48:37 UTC (rev 14494)
@@ -6,7 +6,9 @@
QWidget(parent),
m_ui(new Ui::ConsoleTabWidget),
esl(eslconnection),
- findNext(false)
+ scrollTimer(new QTimer),
+ findNext(false),
+ autoScroll(true)
{
m_ui->setupUi(this);
sourceModel = new QStandardItemModel(this);
@@ -48,6 +50,9 @@
QObject::connect(esl, SIGNAL(gotEvent(ESLevent*)),
this, SLOT(gotEvent(ESLevent*)));
+ QObject::connect(scrollTimer, SIGNAL(timeout()),
+ this, SLOT(conditionalScroll()));
+
esl->connect();
}
@@ -73,6 +78,38 @@
}
}
+void ConsoleTabWidget::flipScrollTimer()
+{
+ if (!esl->isConnected())
+ {
+ scrollTimer->stop();
+ return;
+ }
+
+ if (scrollTimer->isActive())
+ scrollTimer->stop();
+ else if (autoScroll)
+ scrollTimer->start(500);
+}
+
+void ConsoleTabWidget::setAutomaticScroll(bool enabled)
+{
+ qDebug() << "setAutomaticScroll to:" << enabled;
+ autoScroll = enabled;
+}
+
+bool ConsoleTabWidget::getAutomaticScroll()
+{
+ return autoScroll;
+}
+
+void ConsoleTabWidget::conditionalScroll()
+{
+ //if (m_ui->consoleListView->verticalScrollBar()->value() == m_ui->consoleListView->verticalScrollBar()->maximum())
+ qDebug() << "Asked to scroll!";
+ m_ui->consoleListView->scrollToBottom();
+}
+
void ConsoleTabWidget::find()
{
if (m_ui->lineFind->text().isEmpty())
@@ -155,12 +192,8 @@
for (int line = 0; line<textList.size(); line++)
{
final_str += textList[line];
- if (line == textList.size()-1)
- {
- final_str.chop(1);
- }
}
- QStringList lines = final_str.split('\n', QString::SkipEmptyParts);
+ QStringList lines = final_str.split(QRegExp("(\n+)"), QString::SkipEmptyParts);
for (int line = 0; line < lines.size(); ++line)
{
QStandardItem *item = new QStandardItem(lines[line]);
@@ -178,15 +211,7 @@
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());
- if (m_ui->consoleListView->verticalScrollBar()->value() == m_ui->consoleListView->verticalScrollBar()->maximum())
- {
- sourceModel->appendRow(item);
- m_ui->consoleListView->scrollToBottom();
- }
- else
- {
- sourceModel->appendRow(item);
- }
+ sourceModel->appendRow(item);
}
void ConsoleTabWidget::cmdSendClicked()
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h (14493 => 14494)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h 2009-08-12 04:11:33 UTC (rev 14493)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.h 2009-08-12 04:48:37 UTC (rev 14494)
@@ -10,6 +10,7 @@
class QStandardItem;
class QStandardItemModel;
+class QTimer;
class ESLconnection;
class ESLevent;
@@ -21,11 +22,15 @@
public slots:
void clearConsoleContents();
+ void flipScrollTimer();
+ void setAutomaticScroll(bool enabled);
+ bool getAutomaticScroll();
protected:
void changeEvent(QEvent *e);
private slots:
+ void conditionalScroll();
void find();
void findStringChanged(QString);
void connected();
@@ -49,7 +54,10 @@
QModelIndexList foundItems;
SortFilterProxyModel *model;
ESLconnection *esl;
+ QTimer *scrollTimer;
bool findNext;
+ bool autoScroll;
+
};
#endif // CONSOLETABWIDGET_H
Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.ui (14493 => 14494)
--- freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.ui 2009-08-12 04:11:33 UTC (rev 14493)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/plugins/consoleplugin/consoletabwidget.ui 2009-08-12 04:48:37 UTC (rev 14494)
@@ -19,6 +19,12 @@
<property name="title">
<string>Find</string>
</property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="lineFind"/>
@@ -43,7 +49,17 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="QListView" name="consoleListView"/>
+ <widget class="QListView" name="consoleListView">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="layoutMode">
+ <enum>QListView::SinglePass</enum>
+ </property>
+ </widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">