本文整理汇总了C++中ChatViewSettings类的典型用法代码示例。如果您正苦于以下问题:C++ ChatViewSettings类的具体用法?C++ ChatViewSettings怎么用?C++ ChatViewSettings使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ChatViewSettings类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: viewSettings
void ChatScene::secondHandlePositionChanged(qreal xpos) {
if(_secondColHandlePos == xpos)
return;
_secondColHandlePos = xpos;
ChatViewSettings viewSettings(this);
viewSettings.setValue("SecondColumnHandlePos", _secondColHandlePos);
ChatViewSettings defaultSettings;
defaultSettings.setValue("SecondColumnHandlePos", _secondColHandlePos);
// clock_t startT = clock();
// disabling the index while doing this complex updates is about
// 2 to 10 times faster!
//setItemIndexMethod(QGraphicsScene::NoIndex);
QList<ChatLine *>::iterator lineIter = _lines.end();
QList<ChatLine *>::iterator lineIterBegin = _lines.begin();
qreal linePos = _sceneRect.y() + _sceneRect.height();
qreal senderWidth = secondColumnHandle()->sceneLeft() - firstColumnHandle()->sceneRight();
qreal contentsWidth = _sceneRect.width() - secondColumnHandle()->sceneRight();
QPointF contentsPos(secondColumnHandle()->sceneRight(), 0);
while(lineIter != lineIterBegin) {
lineIter--;
(*lineIter)->setSecondColumn(senderWidth, contentsWidth, contentsPos, linePos);
}
//setItemIndexMethod(QGraphicsScene::BspTreeIndex);
updateSceneRect();
setHandleXLimits();
emit layoutChanged();
// clock_t endT = clock();
// qDebug() << "resized" << _lines.count() << "in" << (float)(endT - startT) / CLOCKS_PER_SEC << "sec";
}
示例2: UiStyle
QtUiStyle::QtUiStyle(QObject* parent)
: UiStyle(parent)
{
ChatViewSettings s;
s.initAndNotify("UseCustomTimestampFormat", this, &QtUiStyle::updateUseCustomTimestampFormat);
s.initAndNotify("TimestampFormat", this, &QtUiStyle::updateTimestampFormatString);
s.initAndNotify("SenderPrefixMode", this, &QtUiStyle::updateSenderPrefixDisplay);
s.initAndNotify("ShowSenderBrackets", this, &QtUiStyle::updateShowSenderBrackets);
// If no style sheet exists, generate it on first run.
initializeSettingsQss();
}
示例3: updateTimestampFormatString
void QtUiStyle::updateTimestampFormatString() {
ChatViewSettings s;
setTimestampFormatString(s.timestampFormatString());
}
示例4: UiStyle
QtUiStyle::QtUiStyle(QObject *parent) : UiStyle(parent) {
ChatViewSettings s;
s.notify("TimestampFormat", this, SLOT(updateTimestampFormatString()));
updateTimestampFormatString();
}
示例5: QGraphicsScene
ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal width, ChatView *parent)
: QGraphicsScene(0, 0, width, 0, (QObject *)parent),
_chatView(parent),
_idString(idString),
_model(model),
_singleBufferId(BufferId()),
_sceneRect(0, 0, width, 0),
_firstLineRow(-1),
_viewportHeight(0),
_markerLine(new MarkerLineItem(width)),
_markerLineVisible(false),
_markerLineValid(false),
_markerLineJumpPending(false),
_cutoffMode(CutoffRight),
_selectingItem(0),
_selectionStart(-1),
_isSelecting(false),
_clickMode(NoClick),
_clickHandled(true),
_leftButtonPressed(false)
{
MessageFilter *filter = qobject_cast<MessageFilter*>(model);
if(filter && filter->isSingleBufferFilter()) {
_singleBufferId = filter->singleBufferId();
}
addItem(_markerLine);
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();
ChatViewSettings viewSettings(this);
_firstColHandlePos = viewSettings.value("FirstColumnHandlePos", defaultFirstColHandlePos).toInt();
_secondColHandlePos = viewSettings.value("SecondColumnHandlePos", defaultSecondColHandlePos).toInt();
_firstColHandle = new ColumnHandleItem(QtUi::style()->firstColumnSeparator());
addItem(_firstColHandle);
_firstColHandle->setXPos(_firstColHandlePos);
connect(_firstColHandle, SIGNAL(positionChanged(qreal)), this, SLOT(firstHandlePositionChanged(qreal)));
connect(this, SIGNAL(sceneRectChanged(const QRectF &)), _firstColHandle, SLOT(sceneRectChanged(const QRectF &)));
_secondColHandle = new ColumnHandleItem(QtUi::style()->secondColumnSeparator());
addItem(_secondColHandle);
_secondColHandle->setXPos(_secondColHandlePos);
connect(_secondColHandle, SIGNAL(positionChanged(qreal)), this, SLOT(secondHandlePositionChanged(qreal)));
connect(this, SIGNAL(sceneRectChanged(const QRectF &)), _secondColHandle, SLOT(sceneRectChanged(const QRectF &)));
setHandleXLimits();
if(model->rowCount() > 0)
rowsInserted(QModelIndex(), 0, model->rowCount() - 1);
connect(model, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
this, SLOT(rowsInserted(const QModelIndex &, int, int)));
connect(model, SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)),
this, SLOT(rowsAboutToBeRemoved(const QModelIndex &, int, int)));
connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
this, SLOT(rowsRemoved()));
connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)), SLOT(dataChanged(QModelIndex, QModelIndex)));
#ifdef HAVE_WEBKIT
webPreview.timer.setSingleShot(true);
connect(&webPreview.timer, SIGNAL(timeout()), this, SLOT(webPreviewNextStep()));
#endif
_showWebPreview = defaultSettings.showWebPreview();
defaultSettings.notify("ShowWebPreview", this, SLOT(showWebPreviewChanged()));
_clickTimer.setInterval(QApplication::doubleClickInterval());
_clickTimer.setSingleShot(true);
connect(&_clickTimer, SIGNAL(timeout()), SLOT(clickTimeout()));
setItemIndexMethod(QGraphicsScene::NoIndex);
}
示例6: updateShowSenderBrackets
void QtUiStyle::updateShowSenderBrackets()
{
ChatViewSettings s;
enableSenderBrackets(s.showSenderBrackets());
}
示例7: updateSenderPrefixDisplay
void QtUiStyle::updateSenderPrefixDisplay()
{
ChatViewSettings s;
setSenderPrefixDisplay(s.senderPrefixDisplay());
}
示例8: updateUseCustomTimestampFormat
void QtUiStyle::updateUseCustomTimestampFormat()
{
ChatViewSettings s;
setUseCustomTimestampFormat(s.useCustomTimestampFormat());
}
示例9: switch
bool QtUiApplication::applySettingsMigration(QtUiSettings settings, const uint newVersion)
{
switch (newVersion) {
// Version 0 and 1 aren't valid upgrade paths - one represents no version, the other is the
// oldest version. Ignore those, start from 2 and higher.
// Each missed version will be called in sequence. E.g. to upgrade from '1' to '3', this
// function will be called with '2', then '3'.
// Use explicit scope via { ... } to avoid cross-initialization
//
// In most cases, the goal is to preserve the older default values for keys that haven't been
// saved. Exceptions will be noted below.
// NOTE: If you add new upgrade logic here, you MUST ALSO increase VERSION_MINOR_CURRENT in
// migrateSettings()! Otherwise, your upgrade logic won't ever be called.
case 9:
{
// New default changes: show highest sender prefix mode, if available
// --------
// ChatView settings
ChatViewSettings chatViewSettings;
const QString senderPrefixModeId = "SenderPrefixMode";
if (!chatViewSettings.valueExists(senderPrefixModeId)) {
// New default is HighestMode, preserve previous behavior by setting to NoModes
chatViewSettings.setValue(senderPrefixModeId,
static_cast<int>(UiStyle::SenderPrefixMode::NoModes));
}
// --------
// Migration complete!
return true;
}
case 8:
{
// New default changes: RegEx checkbox now toggles Channel regular expressions, too
//
// This only affects local highlights. Core-side highlights weren't released in stable when
// this change was made, so no need to migrate those.
// --------
// NotificationSettings
NotificationSettings notificationSettings;
// Check each highlight rule for a "Channel" field. If one exists, convert to RegEx mode.
// This might be more efficient with std::transform() or such. It /is/ only run once...
auto highlightList = notificationSettings.highlightList();
bool changesMade = false;
for (int index = 0; index < highlightList.count(); ++index)
{
// Load the highlight rule...
auto highlightRule = highlightList[index].toMap();
// Check if "Channel" has anything set and RegEx is disabled
if (!highlightRule["Channel"].toString().isEmpty()
&& highlightRule["RegEx"].toBool() == false) {
// We have a rule to convert
// Mark as a regular expression, allowing the Channel filtering to work the same as
// before the upgrade
highlightRule["RegEx"] = true;
// Convert the main rule to regular expression, mirroring the conversion to wildcard
// format from QtUiMessageProcessor::checkForHighlight()
highlightRule["Name"] =
"(^|\\W)" + QRegExp::escape(highlightRule["Name"].toString()) + "(\\W|$)";
// Save the rule back
highlightList[index] = highlightRule;
changesMade = true;
}
}
// Save the modified rules if any changes were made
if (changesMade) {
notificationSettings.setHighlightList(highlightList);
}
// --------
// Migration complete!
return true;
}
case 7:
{
// New default changes: UseProxy is no longer used in CoreAccountSettings
CoreAccountSettings s;
for (auto &&accountId : s.knownAccounts()) {
auto map = s.retrieveAccountData(accountId);
if (!map.value("UseProxy", false).toBool()) {
map["ProxyType"] = static_cast<int>(QNetworkProxy::ProxyType::NoProxy);
}
map.remove("UseProxy");
s.storeAccountData(accountId, map);
}
// Migration complete!
return true;
}
case 6:
{
// New default changes: sender colors switched around to Tango-ish theme
//.........这里部分代码省略.........
示例10: AbstractBufferContainer
BufferWidget::BufferWidget(QWidget *parent)
: AbstractBufferContainer(parent),
_chatViewSearchController(new ChatViewSearchController(this)),
_autoMarkerLine(true)
{
ui.setupUi(this);
layout()->setContentsMargins(0, 0, 0, 0);
layout()->setSpacing(0);
// ui.searchBar->hide();
_chatViewSearchController->setCaseSensitive(ui.searchBar->caseSensitiveBox()->isChecked());
_chatViewSearchController->setSearchSenders(ui.searchBar->searchSendersBox()->isChecked());
_chatViewSearchController->setSearchMsgs(ui.searchBar->searchMsgsBox()->isChecked());
_chatViewSearchController->setSearchOnlyRegularMsgs(ui.searchBar->searchOnlyRegularMsgsBox()->isChecked());
connect(ui.searchBar, SIGNAL(searchChanged(const QString &)),
_chatViewSearchController, SLOT(setSearchString(const QString &)));
connect(ui.searchBar->caseSensitiveBox(), SIGNAL(toggled(bool)),
_chatViewSearchController, SLOT(setCaseSensitive(bool)));
connect(ui.searchBar->searchSendersBox(), SIGNAL(toggled(bool)),
_chatViewSearchController, SLOT(setSearchSenders(bool)));
connect(ui.searchBar->searchMsgsBox(), SIGNAL(toggled(bool)),
_chatViewSearchController, SLOT(setSearchMsgs(bool)));
connect(ui.searchBar->searchOnlyRegularMsgsBox(), SIGNAL(toggled(bool)),
_chatViewSearchController, SLOT(setSearchOnlyRegularMsgs(bool)));
connect(ui.searchBar->searchUpButton(), SIGNAL(clicked()),
_chatViewSearchController, SLOT(highlightPrev()));
connect(ui.searchBar->searchDownButton(), SIGNAL(clicked()),
_chatViewSearchController, SLOT(highlightNext()));
connect(ui.searchBar, SIGNAL(hidden()), this, SLOT(setFocus()));
connect(_chatViewSearchController, SIGNAL(newCurrentHighlight(QGraphicsItem *)),
this, SLOT(scrollToHighlight(QGraphicsItem *)));
ActionCollection *coll = QtUi::actionCollection();
Action *zoomInChatview = coll->add<Action>("ZoomInChatView", this, SLOT(zoomIn()));
zoomInChatview->setText(tr("Zoom In"));
zoomInChatview->setIcon(SmallIcon("zoom-in"));
zoomInChatview->setShortcut(QKeySequence::ZoomIn);
Action *zoomOutChatview = coll->add<Action>("ZoomOutChatView", this, SLOT(zoomOut()));
zoomOutChatview->setIcon(SmallIcon("zoom-out"));
zoomOutChatview->setText(tr("Zoom Out"));
zoomOutChatview->setShortcut(QKeySequence::ZoomOut);
Action *zoomOriginalChatview = coll->add<Action>("ZoomOriginalChatView", this, SLOT(zoomOriginal()));
zoomOriginalChatview->setIcon(SmallIcon("zoom-original"));
zoomOriginalChatview->setText(tr("Actual Size"));
//zoomOriginalChatview->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_0)); // used for RTS switching
Action *setMarkerLine = coll->add<Action>("SetMarkerLineToBottom", this, SLOT(setMarkerLine()));
setMarkerLine->setText(tr("Set Marker Line"));
setMarkerLine->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
Action *jumpToMarkerLine = QtUi::actionCollection("Navigation")->add<Action>("JumpToMarkerLine", this, SLOT(jumpToMarkerLine()));
jumpToMarkerLine->setText(tr("Go to Marker Line"));
jumpToMarkerLine->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_K));
ChatViewSettings s;
s.initAndNotify("AutoMarkerLine", this, SLOT(setAutoMarkerLine(QVariant)), true);
}
示例11: showWebPreviewChanged
void ChatScene::showWebPreviewChanged() {
ChatViewSettings settings;
_showWebPreview = settings.showWebPreview();
}