mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
Scaled alignment for elements
This commit is contained in:
parent
d6d2e4abcf
commit
dde47082e6
@ -330,23 +330,23 @@ void OverlayUser::updateLayout() {
|
||||
qgpiDeafened->setPixmap(QPixmap::fromImage(qir.read()));
|
||||
}
|
||||
|
||||
qgpiMuted->setPos(SCALEPOS(MutedDeafened));
|
||||
qgpiMuted->setPos(alignedPosition(scaledRect(g.s.qrfOverlayMutedDeafened, uiSize), qgpiMuted->boundingRect(), g.s.qaOverlayMutedDeafened));
|
||||
qgpiMuted->setZValue(1.0f);
|
||||
qgpiMuted->setOpacity(g.s.fOverlayMutedDeafened);
|
||||
|
||||
qgpiDeafened->setPos(SCALEPOS(MutedDeafened));
|
||||
qgpiDeafened->setPos(alignedPosition(scaledRect(g.s.qrfOverlayMutedDeafened, uiSize), qgpiDeafened->boundingRect(), g.s.qaOverlayMutedDeafened));
|
||||
qgpiDeafened->setZValue(1.0f);
|
||||
qgpiDeafened->setOpacity(g.s.fOverlayMutedDeafened);
|
||||
|
||||
qgpiAvatar->setPos(SCALEPOS(Avatar));
|
||||
qgpiAvatar->setPos(0.0f, 0.0f);
|
||||
qgpiAvatar->setOpacity(g.s.fOverlayAvatar);
|
||||
|
||||
for (int i=0;i<4;++i) {
|
||||
qgpiName[i]->setPos(SCALEPOS(UserName));
|
||||
qgpiName[i]->setPos(0.0f, 0.0f);
|
||||
qgpiName[i]->setZValue(2.0f);
|
||||
qgpiName[i]->setOpacity(g.s.fOverlayUserName);
|
||||
}
|
||||
qgpiChannel->setPos(SCALEPOS(Channel));
|
||||
qgpiChannel->setPos(0.0f, 0.0f);
|
||||
qgpiChannel->setZValue(3.0f);
|
||||
qgpiChannel->setOpacity(g.s.fOverlayChannel);
|
||||
|
||||
@ -450,7 +450,11 @@ void OverlayUser::updateUser() {
|
||||
for (int i=0; i<4; ++i) {
|
||||
const QPixmap &pm = createPixmap(qsName, SCALESIZE(UserName), g.s.qcOverlayUserName[i], g.s.qfOverlayUserName, pp);
|
||||
qgpiName[i]->setPixmap(pm);
|
||||
qgpiName[i]->setPos(SCALEPOS(UserName));
|
||||
|
||||
if (i == 0)
|
||||
qgpiName[0]->setPos(alignedPosition(scaledRect(g.s.qrfOverlayUserName, uiSize), qgpiName[0]->boundingRect(), g.s.qaOverlayUserName));
|
||||
else
|
||||
qgpiName[i]->setPos(qgpiName[0]->pos());
|
||||
}
|
||||
}
|
||||
|
||||
@ -461,7 +465,7 @@ void OverlayUser::updateUser() {
|
||||
QPainterPath pp;
|
||||
const QPixmap &pm = createPixmap(qsChannelName, SCALESIZE(Channel), g.s.qcOverlayChannel, g.s.qfOverlayChannel, pp);
|
||||
qgpiChannel->setPixmap(pm);
|
||||
qgpiChannel->setPos(SCALEPOS(Channel));
|
||||
qgpiChannel->setPos(alignedPosition(scaledRect(g.s.qrfOverlayChannel, uiSize), qgpiChannel->boundingRect(), g.s.qaOverlayChannel));
|
||||
}
|
||||
|
||||
if (g.s.bOverlayAvatar && (qgpiAvatar->pixmap().isNull() || (cuUser && (qbaAvatar != cuUser->qbaTextureHash)))) {
|
||||
@ -487,7 +491,7 @@ void OverlayUser::updateUser() {
|
||||
}
|
||||
|
||||
qgpiAvatar->setPixmap(QPixmap::fromImage(img));
|
||||
qgpiAvatar->setPos(SCALEPOS(Avatar));
|
||||
qgpiAvatar->setPos(alignedPosition(scaledRect(g.s.qrfOverlayAvatar, uiSize), qgpiAvatar->boundingRect(), g.s.qaOverlayAvatar));
|
||||
}
|
||||
|
||||
qgpiAvatar->setVisible(g.s.bOverlayAvatar);
|
||||
@ -862,34 +866,85 @@ void OverlayUser::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
|
||||
|
||||
qm.addSeparator();
|
||||
|
||||
QMenu *qmObjTrans = qm.addMenu(tr("Object Opacity"));
|
||||
QActionGroup *qagObject = new QActionGroup(&qm);
|
||||
QAction *objectOpacity[10];
|
||||
for (int i=0;i<8;++i) {
|
||||
qreal o = (i + 1) / 8.0f;
|
||||
|
||||
objectOpacity[i] = new QAction(tr("%1%").arg(o * 100.0f, 0, 'f', 1), qagObject);
|
||||
objectOpacity[i]->setCheckable(true);
|
||||
objectOpacity[i]->setData(o);
|
||||
if (qFuzzyCompare(item->opacity(), o))
|
||||
objectOpacity[i]->setChecked(true);
|
||||
qmObjTrans->addAction(objectOpacity[i]);
|
||||
}
|
||||
|
||||
|
||||
QAction *color = NULL;
|
||||
QAction *font = NULL;
|
||||
|
||||
if ((item != qgpiAvatar) && (item != qgpiMuted) && (item != qgpiDeafened)) {
|
||||
color = qm.addAction(tr("Color..."));
|
||||
font = qm.addAction(tr("Font..."));
|
||||
}
|
||||
|
||||
QAction *objectOpacity[8];
|
||||
for(int i=0;i<8;++i)
|
||||
objectOpacity[i] = NULL;
|
||||
QAction *boxpen[4] = { NULL, NULL, NULL, NULL};
|
||||
QAction *boxpad[4] = { NULL, NULL, NULL, NULL};
|
||||
QAction *boxpencolor = NULL;
|
||||
QAction *boxfillcolor = NULL;
|
||||
|
||||
QAction *align[6];
|
||||
for(int i=0;i<6;++i)
|
||||
align[i] = NULL;
|
||||
|
||||
if (item) {
|
||||
QMenu *qmObjTrans = qm.addMenu(tr("Object Opacity"));
|
||||
QActionGroup *qagObject = new QActionGroup(&qm);
|
||||
for (int i=0;i<8;++i) {
|
||||
qreal o = (i + 1) / 8.0f;
|
||||
|
||||
objectOpacity[i] = new QAction(tr("%1%").arg(o * 100.0f, 0, 'f', 1), qagObject);
|
||||
objectOpacity[i]->setCheckable(true);
|
||||
objectOpacity[i]->setData(o);
|
||||
if (qFuzzyCompare(item->opacity(), o))
|
||||
objectOpacity[i]->setChecked(true);
|
||||
qmObjTrans->addAction(objectOpacity[i]);
|
||||
}
|
||||
|
||||
QMenu *qmObjAlign = qm.addMenu(tr("Alignment"));
|
||||
Qt::Alignment a;
|
||||
if (item == qgpiAvatar)
|
||||
a = g.s.qaOverlayAvatar;
|
||||
else if (item == qgpiChannel)
|
||||
a = g.s.qaOverlayChannel;
|
||||
else if ((item == qgpiMuted) || (item == qgpiDeafened))
|
||||
a = g.s.qaOverlayMutedDeafened;
|
||||
else
|
||||
a = g.s.qaOverlayUserName;
|
||||
|
||||
align[0] = qmObjAlign->addAction(tr("Left"));
|
||||
align[0]->setCheckable(true);
|
||||
align[0]->setData(Qt::AlignLeft);
|
||||
if (a & Qt::AlignLeft)
|
||||
align[0]->setChecked(true);
|
||||
align[1] = qmObjAlign->addAction(tr("Center"));
|
||||
align[1]->setCheckable(true);
|
||||
align[1]->setData(Qt::AlignHCenter);
|
||||
if (a & Qt::AlignHCenter)
|
||||
align[1]->setChecked(true);
|
||||
align[2] = qmObjAlign->addAction(tr("Right"));
|
||||
align[2]->setCheckable(true);
|
||||
align[2]->setData(Qt::AlignRight);
|
||||
if (a & Qt::AlignRight)
|
||||
align[2]->setChecked(true);
|
||||
|
||||
qmObjAlign->addSeparator();
|
||||
|
||||
align[3] = qmObjAlign->addAction(tr("Top"));
|
||||
align[3]->setCheckable(true);
|
||||
align[3]->setData(Qt::AlignTop);
|
||||
if (a & Qt::AlignTop)
|
||||
align[3]->setChecked(true);
|
||||
align[4] = qmObjAlign->addAction(tr("Center"));
|
||||
align[4]->setCheckable(true);
|
||||
align[4]->setData(Qt::AlignVCenter);
|
||||
if (a & Qt::AlignVCenter)
|
||||
align[4]->setChecked(true);
|
||||
align[5] = qmObjAlign->addAction(tr("Bottom"));
|
||||
align[5]->setCheckable(true);
|
||||
align[5]->setData(Qt::AlignBottom);
|
||||
if (a & Qt::AlignBottom)
|
||||
align[5]->setChecked(true);
|
||||
|
||||
if ((item != qgpiAvatar) && (item != qgpiMuted) && (item != qgpiDeafened)) {
|
||||
color = qm.addAction(tr("Color..."));
|
||||
font = qm.addAction(tr("Font..."));
|
||||
}
|
||||
}
|
||||
|
||||
if (g.s.bOverlayBox) {
|
||||
qm.addSeparator();
|
||||
QMenu *qmBox = qm.addMenu(tr("Bounding box"));
|
||||
@ -919,191 +974,210 @@ void OverlayUser::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
|
||||
}
|
||||
|
||||
QAction *act = qm.exec(event->screenPos());
|
||||
if (act) {
|
||||
for (int i=0;i<8;++i) {
|
||||
if (userOpacity[i] == act) {
|
||||
float o = act->data().toReal();
|
||||
g.s.fOverlayUser[tsColor] = o;
|
||||
g.o->forceSettings();
|
||||
}
|
||||
}
|
||||
|
||||
if (! act)
|
||||
return;
|
||||
|
||||
for (int i=0;i<8;++i) {
|
||||
if (objectOpacity[i] == act) {
|
||||
qreal o = act->data().toReal();
|
||||
|
||||
if ((item == qgpiMuted) || (item == qgpiDeafened))
|
||||
g.s.fOverlayMutedDeafened = o;
|
||||
else if (item == qgpiAvatar)
|
||||
g.s.fOverlayAvatar = o;
|
||||
else if (item == qgpiChannel)
|
||||
g.s.fOverlayChannel = o;
|
||||
else
|
||||
for (int i=0;i<4;++i)
|
||||
if (item == qgpiName[i])
|
||||
g.s.fOverlayUserName = o;
|
||||
|
||||
g.o->forceSettings();
|
||||
}
|
||||
for (int i=0;i<8;++i) {
|
||||
if (userOpacity[i] == act) {
|
||||
float o = act->data().toReal();
|
||||
g.s.fOverlayUser[tsColor] = o;
|
||||
}
|
||||
|
||||
for(int i=0;i<4;++i) {
|
||||
if (boxpen[i] == act) {
|
||||
g.s.fOverlayBoxPenWidth = act->data().toReal();
|
||||
g.o->forceSettings();
|
||||
} else if (boxpad[i] == act) {
|
||||
g.s.fOverlayBoxPad = act->data().toReal();
|
||||
g.o->forceSettings();
|
||||
}
|
||||
}
|
||||
|
||||
if (act == boxpencolor) {
|
||||
QColor qc = QColorDialog::getColor(g.s.qcOverlayBoxPen, g.mw, tr("Pick pen color"), QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
|
||||
if (qc.isValid()) {
|
||||
g.s.qcOverlayBoxPen = qc;
|
||||
g.o->forceSettings();
|
||||
}
|
||||
} else if (act == boxfillcolor) {
|
||||
QColor qc = QColorDialog::getColor(g.s.qcOverlayBoxFill, g.mw, tr("Pick fill color"), QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
|
||||
if (qc.isValid()) {
|
||||
g.s.qcOverlayBoxFill = qc;
|
||||
g.o->forceSettings();
|
||||
}
|
||||
} else if (act == color) {
|
||||
QColor *col = NULL;
|
||||
if (item == qgpiChannel)
|
||||
col = & g.s.qcOverlayChannel;
|
||||
}
|
||||
|
||||
for (int i=0;i<8;++i) {
|
||||
if (objectOpacity[i] == act) {
|
||||
qreal o = act->data().toReal();
|
||||
|
||||
if ((item == qgpiMuted) || (item == qgpiDeafened))
|
||||
g.s.fOverlayMutedDeafened = o;
|
||||
else if (item == qgpiAvatar)
|
||||
g.s.fOverlayAvatar = o;
|
||||
else if (item == qgpiChannel)
|
||||
g.s.fOverlayChannel = o;
|
||||
else
|
||||
for (int i=0;i<4;++i)
|
||||
if (item == qgpiName[i])
|
||||
col = & g.s.qcOverlayUserName[i];
|
||||
|
||||
if (col) {
|
||||
QColor qc = QColorDialog::getColor(*col, g.mw, tr("Pick color"), QColorDialog::DontUseNativeDialog);
|
||||
if (qc.isValid()) {
|
||||
qc.setAlpha(255);
|
||||
if (qc != *col) {
|
||||
*col = qc;
|
||||
g.o->forceSettings();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (act == font) {
|
||||
QFont *fontptr = (item == qgpiChannel) ? &g.s.qfOverlayChannel : &g.s.qfOverlayUserName;
|
||||
|
||||
// QFontDialog doesn't really like graphics view. At all.
|
||||
|
||||
QFontDialog qfd;
|
||||
qfd.setOptions(QFontDialog::DontUseNativeDialog);
|
||||
qfd.setCurrentFont(*fontptr);
|
||||
qfd.setWindowTitle(tr("Pick font"));
|
||||
|
||||
QGraphicsProxyWidget *qgpw = new QGraphicsProxyWidget(NULL, Qt::Window);
|
||||
qgpw->setWidget(&qfd);
|
||||
scene()->addItem(qgpw);
|
||||
qgpw->show();
|
||||
|
||||
int ret = qfd.exec();
|
||||
|
||||
qgpw->hide();
|
||||
qgpw->setWidget(NULL);
|
||||
delete qgpw;
|
||||
|
||||
if (ret) {
|
||||
*fontptr = qfd.selectedFont();
|
||||
g.o->forceSettings();
|
||||
}
|
||||
} else if (act == qaLayoutLargeAvatar) {
|
||||
g.s.fOverlayUserName = 0.75f;
|
||||
g.s.fOverlayChannel = 0.75f;
|
||||
g.s.fOverlayMutedDeafened = 0.5f;
|
||||
g.s.fOverlayAvatar = 1.0f;
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Verdana"), 20);
|
||||
#else
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Arial"), 20);
|
||||
#endif
|
||||
g.s.qfOverlayChannel = g.s.qfOverlayUserName;
|
||||
|
||||
g.s.fOverlayUser[Settings::Passive] = 0.5f;
|
||||
g.s.fOverlayUser[Settings::Talking] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperPrivate] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperChannel] = (7.0f / 8.0f);
|
||||
|
||||
g.s.qrfOverlayUserName = QRectF(0.0f, 0.101563f, 0.125f, 0.023438f);
|
||||
g.s.qrfOverlayChannel = QRectF(0.03125f, 0.0f, 0.09375f, 0.015625f);
|
||||
g.s.qrfOverlayMutedDeafened = QRectF(0.0f, 0.0f, 0.0625f, 0.0625f);
|
||||
g.s.qrfOverlayAvatar = QRectF(0.0f, 0.0f, 0.125f, 0.125f);
|
||||
|
||||
g.s.qcOverlayBoxPen = QColor(0, 0, 0, 224);
|
||||
g.s.qcOverlayBoxFill = QColor(128, 128, 128, 128);
|
||||
g.s.fOverlayBoxPenWidth = (1.f / 256.0f);
|
||||
g.s.fOverlayBoxPad = (1.f / 256.0f);
|
||||
|
||||
g.s.bOverlayUserName = true;
|
||||
g.s.bOverlayChannel = true;
|
||||
g.s.bOverlayMutedDeafened = true;
|
||||
g.s.bOverlayAvatar = true;
|
||||
g.s.bOverlayBox = false;
|
||||
|
||||
g.o->forceSettings();
|
||||
} else if (act == qaLayoutText) {
|
||||
g.s.fOverlayUserName = 1.0f;
|
||||
g.s.fOverlayChannel = (7.0f / 8.0f);
|
||||
g.s.fOverlayMutedDeafened = (7.0f / 8.0f);
|
||||
g.s.fOverlayAvatar = 1.0f;
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Verdana"), 20);
|
||||
#else
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Arial"), 20);
|
||||
#endif
|
||||
g.s.qfOverlayChannel = g.s.qfOverlayUserName;
|
||||
|
||||
g.s.fOverlayUser[Settings::Passive] = 0.5f;
|
||||
g.s.fOverlayUser[Settings::Talking] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperPrivate] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperChannel] = (7.0f / 8.0f);
|
||||
|
||||
g.s.qrfOverlayUserName = QRectF(0.03125f, 0.0f, 0.250f, 0.03125f);
|
||||
g.s.qrfOverlayChannel = QRectF(0.0625f, 0.0f, 0.1875f, 0.015625f);
|
||||
g.s.qrfOverlayMutedDeafened = QRectF(0.0f, 0.0f, 0.03125f, 0.03125f);
|
||||
g.s.qrfOverlayAvatar = QRectF(0.0f, 0.0f, 0.03125f, 0.03125f);
|
||||
|
||||
g.s.qcOverlayBoxPen = QColor(0, 0, 0, 224);
|
||||
g.s.qcOverlayBoxFill = QColor(128, 128, 128, 128);
|
||||
g.s.fOverlayBoxPenWidth = 0.0f;
|
||||
g.s.fOverlayBoxPad = (1.f / 512.0f);
|
||||
|
||||
g.s.bOverlayUserName = true;
|
||||
g.s.bOverlayChannel = false;
|
||||
g.s.bOverlayMutedDeafened = true;
|
||||
g.s.bOverlayAvatar = true;
|
||||
g.s.bOverlayBox = true;
|
||||
|
||||
g.o->forceSettings();
|
||||
} else if (act == qaElementAvatar) {
|
||||
g.s.bOverlayAvatar = ! g.s.bOverlayAvatar;
|
||||
if (! g.s.bOverlayAvatar)
|
||||
g.s.bOverlayUserName = true;
|
||||
g.o->forceSettings();
|
||||
} else if (act == qaElementUserName) {
|
||||
g.s.bOverlayUserName = ! g.s.bOverlayUserName;
|
||||
if (! g.s.bOverlayUserName)
|
||||
g.s.bOverlayAvatar = true;
|
||||
g.o->forceSettings();
|
||||
} else if (act == qaElementChannel) {
|
||||
g.s.bOverlayChannel = ! g.s.bOverlayChannel;
|
||||
g.o->forceSettings();
|
||||
} else if (act == qaElementMutedDeafened) {
|
||||
g.s.bOverlayMutedDeafened = ! g.s.bOverlayMutedDeafened;
|
||||
g.o->forceSettings();
|
||||
} else if (act == qaElementBox) {
|
||||
g.s.bOverlayBox = ! g.s.bOverlayBox;
|
||||
g.o->forceSettings();
|
||||
g.s.fOverlayUserName = o;
|
||||
}
|
||||
}
|
||||
|
||||
for(int i=0;i<4;++i) {
|
||||
if (boxpen[i] == act) {
|
||||
g.s.fOverlayBoxPenWidth = act->data().toReal();
|
||||
g.o->forceSettings();
|
||||
} else if (boxpad[i] == act) {
|
||||
g.s.fOverlayBoxPad = act->data().toReal();
|
||||
}
|
||||
}
|
||||
|
||||
for(int i=0;i<6;++i) {
|
||||
if (align[i] == act) {
|
||||
Qt::Alignment *aptr;
|
||||
if (item == qgpiAvatar)
|
||||
aptr = & g.s.qaOverlayAvatar;
|
||||
else if (item == qgpiChannel)
|
||||
aptr = & g.s.qaOverlayChannel;
|
||||
else if ((item == qgpiMuted) || (item == qgpiDeafened))
|
||||
aptr = & g.s.qaOverlayMutedDeafened;
|
||||
else
|
||||
aptr = & g.s.qaOverlayUserName;
|
||||
|
||||
Qt::Alignment a = act->data().toInt();
|
||||
if (a & Qt::AlignHorizontal_Mask) {
|
||||
*aptr = (*aptr & ~Qt::AlignHorizontal_Mask) | a;
|
||||
} else {
|
||||
*aptr = (*aptr & ~Qt::AlignVertical_Mask) | a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (act == boxpencolor) {
|
||||
QColor qc = QColorDialog::getColor(g.s.qcOverlayBoxPen, g.mw, tr("Pick pen color"), QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
|
||||
if (! qc.isValid())
|
||||
return;
|
||||
g.s.qcOverlayBoxPen = qc;
|
||||
} else if (act == boxfillcolor) {
|
||||
QColor qc = QColorDialog::getColor(g.s.qcOverlayBoxFill, g.mw, tr("Pick fill color"), QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
|
||||
if (! qc.isValid())
|
||||
return;
|
||||
g.s.qcOverlayBoxFill = qc;
|
||||
} else if (act == color) {
|
||||
QColor *col = NULL;
|
||||
if (item == qgpiChannel)
|
||||
col = & g.s.qcOverlayChannel;
|
||||
else
|
||||
for (int i=0;i<4;++i)
|
||||
if (item == qgpiName[i])
|
||||
col = & g.s.qcOverlayUserName[i];
|
||||
if (! col)
|
||||
return;
|
||||
|
||||
QColor qc = QColorDialog::getColor(*col, g.mw, tr("Pick color"), QColorDialog::DontUseNativeDialog);
|
||||
if (! qc.isValid())
|
||||
return;
|
||||
qc.setAlpha(255);
|
||||
|
||||
if (qc == *col)
|
||||
return;
|
||||
|
||||
*col = qc;
|
||||
} else if (act == font) {
|
||||
QFont *fontptr = (item == qgpiChannel) ? &g.s.qfOverlayChannel : &g.s.qfOverlayUserName;
|
||||
|
||||
// QFontDialog doesn't really like graphics view. At all.
|
||||
|
||||
QFontDialog qfd;
|
||||
qfd.setOptions(QFontDialog::DontUseNativeDialog);
|
||||
qfd.setCurrentFont(*fontptr);
|
||||
qfd.setWindowTitle(tr("Pick font"));
|
||||
|
||||
QGraphicsProxyWidget *qgpw = new QGraphicsProxyWidget(NULL, Qt::Window);
|
||||
qgpw->setWidget(&qfd);
|
||||
scene()->addItem(qgpw);
|
||||
qgpw->show();
|
||||
|
||||
int ret = qfd.exec();
|
||||
|
||||
qgpw->hide();
|
||||
qgpw->setWidget(NULL);
|
||||
delete qgpw;
|
||||
|
||||
if (! ret)
|
||||
return;
|
||||
*fontptr = qfd.selectedFont();
|
||||
} else if (act == qaLayoutLargeAvatar) {
|
||||
g.s.fOverlayUserName = 0.75f;
|
||||
g.s.fOverlayChannel = 0.75f;
|
||||
g.s.fOverlayMutedDeafened = 0.5f;
|
||||
g.s.fOverlayAvatar = 1.0f;
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Verdana"), 20);
|
||||
#else
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Arial"), 20);
|
||||
#endif
|
||||
g.s.qfOverlayChannel = g.s.qfOverlayUserName;
|
||||
|
||||
g.s.fOverlayUser[Settings::Passive] = 0.5f;
|
||||
g.s.fOverlayUser[Settings::Talking] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperPrivate] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperChannel] = (7.0f / 8.0f);
|
||||
|
||||
g.s.qrfOverlayUserName = QRectF(0.0f, 0.101563f, 0.125f, 0.023438f);
|
||||
g.s.qrfOverlayChannel = QRectF(0.03125f, 0.0f, 0.09375f, 0.015625f);
|
||||
g.s.qrfOverlayMutedDeafened = QRectF(0.0f, 0.0f, 0.0625f, 0.0625f);
|
||||
g.s.qrfOverlayAvatar = QRectF(0.0f, 0.0f, 0.125f, 0.125f);
|
||||
|
||||
g.s.qcOverlayBoxPen = QColor(0, 0, 0, 224);
|
||||
g.s.qcOverlayBoxFill = QColor(128, 128, 128, 128);
|
||||
g.s.fOverlayBoxPenWidth = (1.f / 256.0f);
|
||||
g.s.fOverlayBoxPad = (1.f / 256.0f);
|
||||
|
||||
g.s.bOverlayUserName = true;
|
||||
g.s.bOverlayChannel = true;
|
||||
g.s.bOverlayMutedDeafened = true;
|
||||
g.s.bOverlayAvatar = true;
|
||||
g.s.bOverlayBox = false;
|
||||
|
||||
g.s.qaOverlayUserName = Qt::AlignCenter;
|
||||
g.s.qaOverlayMutedDeafened = Qt::AlignLeft | Qt::AlignTop;
|
||||
g.s.qaOverlayAvatar = Qt::AlignCenter;
|
||||
g.s.qaOverlayChannel = Qt::AlignCenter;
|
||||
} else if (act == qaLayoutText) {
|
||||
g.s.fOverlayUserName = 1.0f;
|
||||
g.s.fOverlayChannel = (7.0f / 8.0f);
|
||||
g.s.fOverlayMutedDeafened = (7.0f / 8.0f);
|
||||
g.s.fOverlayAvatar = 1.0f;
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Verdana"), 20);
|
||||
#else
|
||||
g.s.qfOverlayUserName = QFont(QLatin1String("Arial"), 20);
|
||||
#endif
|
||||
g.s.qfOverlayChannel = g.s.qfOverlayUserName;
|
||||
|
||||
g.s.fOverlayUser[Settings::Passive] = 0.5f;
|
||||
g.s.fOverlayUser[Settings::Talking] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperPrivate] = (7.0f / 8.0f);
|
||||
g.s.fOverlayUser[Settings::WhisperChannel] = (7.0f / 8.0f);
|
||||
|
||||
g.s.qrfOverlayUserName = QRectF(0.03125f, 0.0f, 0.250f, 0.03125f);
|
||||
g.s.qrfOverlayChannel = QRectF(0.0625f, 0.0f, 0.1875f, 0.015625f);
|
||||
g.s.qrfOverlayMutedDeafened = QRectF(0.0f, 0.0f, 0.03125f, 0.03125f);
|
||||
g.s.qrfOverlayAvatar = QRectF(0.0f, 0.0f, 0.03125f, 0.03125f);
|
||||
|
||||
g.s.qcOverlayBoxPen = QColor(0, 0, 0, 224);
|
||||
g.s.qcOverlayBoxFill = QColor(128, 128, 128, 128);
|
||||
g.s.fOverlayBoxPenWidth = 0.0f;
|
||||
g.s.fOverlayBoxPad = (1.f / 512.0f);
|
||||
|
||||
g.s.bOverlayUserName = true;
|
||||
g.s.bOverlayChannel = false;
|
||||
g.s.bOverlayMutedDeafened = true;
|
||||
g.s.bOverlayAvatar = true;
|
||||
g.s.bOverlayBox = true;
|
||||
|
||||
g.s.qaOverlayUserName = Qt::AlignLeft | Qt::AlignVCenter;
|
||||
g.s.qaOverlayMutedDeafened = Qt::AlignRight | Qt::AlignVCenter;
|
||||
g.s.qaOverlayAvatar = Qt::AlignRight | Qt::AlignVCenter;
|
||||
g.s.qaOverlayChannel = Qt::AlignLeft | Qt::AlignTop;
|
||||
} else if (act == qaElementAvatar) {
|
||||
g.s.bOverlayAvatar = ! g.s.bOverlayAvatar;
|
||||
if (! g.s.bOverlayAvatar)
|
||||
g.s.bOverlayUserName = true;
|
||||
} else if (act == qaElementUserName) {
|
||||
g.s.bOverlayUserName = ! g.s.bOverlayUserName;
|
||||
if (! g.s.bOverlayUserName)
|
||||
g.s.bOverlayAvatar = true;
|
||||
} else if (act == qaElementChannel) {
|
||||
g.s.bOverlayChannel = ! g.s.bOverlayChannel;
|
||||
} else if (act == qaElementMutedDeafened) {
|
||||
g.s.bOverlayMutedDeafened = ! g.s.bOverlayMutedDeafened;
|
||||
} else if (act == qaElementBox) {
|
||||
g.s.bOverlayBox = ! g.s.bOverlayBox;
|
||||
}
|
||||
g.o->forceSettings();
|
||||
}
|
||||
|
||||
static qreal distancePointLine(const QPointF &a, const QPointF &b, const QPointF &p) {
|
||||
@ -1165,6 +1239,31 @@ QRectF OverlayUser::scaledRect(const QRectF &qr, qreal scale) {
|
||||
return QRectF(qr.x() * scale, qr.y() * scale, qr.width() * scale, qr.height() * scale);
|
||||
}
|
||||
|
||||
QPointF OverlayUser::alignedPosition(const QRectF &box, const QRectF &item, Qt::Alignment a) {
|
||||
qreal boxw = box.width();
|
||||
qreal boxh = box.height();
|
||||
|
||||
qreal itemw = item.width();
|
||||
qreal itemh = item.height();
|
||||
|
||||
qreal wdiff = boxw - itemw;
|
||||
qreal hdiff = boxh - itemh;
|
||||
|
||||
qreal xofs = box.x() - item.x();
|
||||
qreal yofs = box.y() - item.y();
|
||||
|
||||
if (a & Qt::AlignRight)
|
||||
xofs += wdiff;
|
||||
else if (a & Qt::AlignHCenter)
|
||||
xofs += wdiff * 0.5f;
|
||||
|
||||
if (a & Qt::AlignBottom)
|
||||
yofs += hdiff;
|
||||
else if (a & Qt::AlignVCenter)
|
||||
yofs += hdiff * 0.5f;
|
||||
|
||||
return QPointF(iroundf(xofs), iroundf(yofs));
|
||||
}
|
||||
|
||||
OverlayMouse::OverlayMouse(QGraphicsItem *p) : QGraphicsPixmapItem(p) {
|
||||
}
|
||||
@ -1363,6 +1462,7 @@ void OverlayClient::showGui() {
|
||||
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
|
||||
qt_use_native_dialogs = false;
|
||||
#endif
|
||||
g.o->updateOverlay();
|
||||
}
|
||||
|
||||
void OverlayClient::hideGui() {
|
||||
@ -1413,6 +1513,8 @@ void OverlayClient::hideGui() {
|
||||
qt_use_native_dialogs = true;
|
||||
#endif
|
||||
|
||||
g.o->updateOverlay();
|
||||
|
||||
if (bDelete)
|
||||
deleteLater();
|
||||
}
|
||||
@ -1844,7 +1946,6 @@ bool Overlay::isActive() const {
|
||||
void Overlay::toggleShow() {
|
||||
if (g.ocIntercept) {
|
||||
g.ocIntercept->hideGui();
|
||||
updateOverlay();
|
||||
} else {
|
||||
foreach(OverlayClient *oc, qlClients) {
|
||||
if (oc->uiPid) {
|
||||
@ -1856,7 +1957,6 @@ void Overlay::toggleShow() {
|
||||
continue;
|
||||
#endif
|
||||
oc->showGui();
|
||||
updateOverlay();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,6 +124,7 @@ class OverlayUser : public QObject, public QGraphicsItem {
|
||||
|
||||
static Qt::WindowFrameSection rectSection(const QRectF &rect, const QPointF &point, qreal dist = 3.0f);
|
||||
static QRectF scaledRect(const QRectF &qr, qreal scale);
|
||||
static QPointF alignedPosition(const QRectF &box, const QRectF &item, Qt::Alignment a);
|
||||
public:
|
||||
OverlayUser(ClientUser *cu, unsigned int uiSize);
|
||||
OverlayUser(Settings::TalkState ts, unsigned int uiSize);
|
||||
|
||||
@ -258,6 +258,11 @@ Settings::Settings() {
|
||||
bOverlayMutedDeafened = true;
|
||||
bOverlayAvatar = true;
|
||||
bOverlayBox = false;
|
||||
|
||||
qaOverlayUserName = Qt::AlignCenter;
|
||||
qaOverlayMutedDeafened = Qt::AlignLeft | Qt::AlignTop;
|
||||
qaOverlayAvatar = Qt::AlignCenter;
|
||||
qaOverlayChannel = Qt::AlignCenter;
|
||||
|
||||
iLCDUserViewMinColWidth = 50;
|
||||
iLCDUserViewSplitterWidth = 2;
|
||||
|
||||
@ -174,6 +174,11 @@ struct Settings {
|
||||
QRectF qrfOverlayMutedDeafened;
|
||||
QRectF qrfOverlayAvatar;
|
||||
|
||||
Qt::Alignment qaOverlayUserName;
|
||||
Qt::Alignment qaOverlayChannel;
|
||||
Qt::Alignment qaOverlayMutedDeafened;
|
||||
Qt::Alignment qaOverlayAvatar;
|
||||
|
||||
int iLCDUserViewMinColWidth;
|
||||
int iLCDUserViewSplitterWidth;
|
||||
QMap<QString, bool> qmLCDDevices;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user