From: Daniel Albers Date: Sat, 1 Mar 2014 18:51:29 +0000 (+0100) Subject: add context menu action to reset chat column widths X-Git-Tag: 0.10-rc1~7 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=6ec86373070f98c4700f998d114d9a4e600f3335;hp=-c add context menu action to reset chat column widths If a ChatScene column has been resized during the current Quassel client session or a column is <= 10 px wide, offer to reset the columns to sane widths. --- 6ec86373070f98c4700f998d114d9a4e600f3335 diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index a7f2360a..4dfd8138 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -89,12 +89,12 @@ ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal w connect(this, SIGNAL(sceneRectChanged(const QRectF &)), _markerLine, SLOT(sceneRectChanged(const QRectF &))); ChatViewSettings defaultSettings; - int defaultFirstColHandlePos = defaultSettings.value("FirstColumnHandlePos", 80).toInt(); - int defaultSecondColHandlePos = defaultSettings.value("SecondColumnHandlePos", 200).toInt(); + _defaultFirstColHandlePos = defaultSettings.value("FirstColumnHandlePos", 80).toInt(); + _defaultSecondColHandlePos = defaultSettings.value("SecondColumnHandlePos", 200).toInt(); ChatViewSettings viewSettings(this); - _firstColHandlePos = viewSettings.value("FirstColumnHandlePos", defaultFirstColHandlePos).toInt(); - _secondColHandlePos = viewSettings.value("SecondColumnHandlePos", defaultSecondColHandlePos).toInt(); + _firstColHandlePos = viewSettings.value("FirstColumnHandlePos", _defaultFirstColHandlePos).toInt(); + _secondColHandlePos = viewSettings.value("SecondColumnHandlePos", _defaultSecondColHandlePos).toInt(); _firstColHandle = new ColumnHandleItem(QtUi::style()->firstColumnSeparator()); addItem(_firstColHandle); @@ -159,6 +159,17 @@ ColumnHandleItem *ChatScene::secondColumnHandle() const return _secondColHandle; } +void ChatScene::resetColumnWidths() +{ + //make sure first column is at least 80 px wide, second 120 px + int firstColHandlePos = qMax(_defaultFirstColHandlePos, + 80); + int secondColHandlePos = qMax(_defaultSecondColHandlePos, + firstColHandlePos + 120); + + _firstColHandle->setXPos(firstColHandlePos); + _secondColHandle->setXPos(secondColHandlePos); +} ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange) const { @@ -827,6 +838,11 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) if (QtUi::mainWindow()->menuBar()->isHidden()) menu.addAction(QtUi::actionCollection("General")->action("ToggleMenuBar")); + // show column reset action if columns have been resized in this session or there is at least one very narrow column + if ((_firstColHandlePos != _defaultFirstColHandlePos) || (_secondColHandlePos != _defaultSecondColHandlePos) || + (_firstColHandlePos <= 10) || (_secondColHandlePos - _firstColHandlePos <= 10)) + menu.addAction(new Action(tr("Reset Column Widths"), &menu, this, SLOT(resetColumnWidths()), 0)); + menu.exec(event->screenPos()); } diff --git a/src/qtui/chatscene.h b/src/qtui/chatscene.h index c640b6a5..d8c4db93 100644 --- a/src/qtui/chatscene.h +++ b/src/qtui/chatscene.h @@ -130,6 +130,8 @@ public slots: void setWidth(qreal width); void layout(int start, int end, qreal width); + void resetColumnWidths(); + void setMarkerLineVisible(bool visible = true); void setMarkerLine(MsgId msgId = MsgId()); void jumpToMarkerLine(bool requestBacklog); @@ -206,6 +208,7 @@ private: ColumnHandleItem *_firstColHandle, *_secondColHandle; qreal _firstColHandlePos, _secondColHandlePos; + int _defaultFirstColHandlePos, _defaultSecondColHandlePos; CutoffMode _cutoffMode; ChatItem *_selectingItem; diff --git a/src/qtui/columnhandleitem.cpp b/src/qtui/columnhandleitem.cpp index 916748ab..e67c7a10 100644 --- a/src/qtui/columnhandleitem.cpp +++ b/src/qtui/columnhandleitem.cpp @@ -58,6 +58,7 @@ void ColumnHandleItem::setXPos(qreal xpos) QRectF sceneBRect = _boundingRect.translated(x(), 0); _sceneLeft = sceneBRect.left(); _sceneRight = sceneBRect.right(); + emit positionChanged(xpos); }