mirror of https://github.com/procxx/kepka.git
custom context menus (including tray menu for windows) done
This commit is contained in:
parent
a4e9dadc2d
commit
0d85f91453
|
@ -1514,3 +1514,20 @@ macSelectorTop: 6;
|
||||||
macAlwaysThisAppTop: 4;
|
macAlwaysThisAppTop: 4;
|
||||||
macAppHintTop: 8;
|
macAppHintTop: 8;
|
||||||
macCautionIconSize: size(16, 16);
|
macCautionIconSize: size(16, 16);
|
||||||
|
|
||||||
|
btnContext: iconedButton(btnDefIconed) {
|
||||||
|
bgColor: white;
|
||||||
|
overBgColor: btnWhiteHover;
|
||||||
|
font: font(14px);
|
||||||
|
|
||||||
|
opacity: 1;
|
||||||
|
overOpacity: 1;
|
||||||
|
|
||||||
|
width: 172px;
|
||||||
|
height: 36px;
|
||||||
|
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
textPos: point(16px, 7px);
|
||||||
|
downTextPos: point(16px, 8px);
|
||||||
|
}
|
||||||
|
|
|
@ -596,7 +596,7 @@ void Application::startApp() {
|
||||||
window->setupIntro(false);
|
window->setupIntro(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
window->psFirstShow();
|
window->firstShow();
|
||||||
|
|
||||||
if (cStartToSettings()) {
|
if (cStartToSettings()) {
|
||||||
window->showSettings();
|
window->showSettings();
|
||||||
|
|
|
@ -118,9 +118,9 @@ struct BuiltInDc {
|
||||||
|
|
||||||
static const BuiltInDc _builtInDcs[] = {
|
static const BuiltInDc _builtInDcs[] = {
|
||||||
{ 1, "173.240.5.1", 443 },
|
{ 1, "173.240.5.1", 443 },
|
||||||
{ 2, "149.154.167.50", 443 },
|
{ 2, "149.154.167.51", 443 },
|
||||||
{ 3, "174.140.142.6", 443 },
|
{ 3, "174.140.142.6", 443 },
|
||||||
{ 4, "149.154.167.90", 443 },
|
{ 4, "149.154.167.91", 443 },
|
||||||
{ 5, "149.154.171.5", 443 }
|
{ 5, "149.154.171.5", 443 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -24,21 +24,13 @@ Button::Button(QWidget *parent) : TWidget(parent), _state(StateNone), _acceptBot
|
||||||
void Button::leaveEvent(QEvent *e) {
|
void Button::leaveEvent(QEvent *e) {
|
||||||
if (_state & StateDown) return;
|
if (_state & StateDown) return;
|
||||||
|
|
||||||
if (_state & StateOver) {
|
setOver(false, ButtonByHover);
|
||||||
int oldState = _state;
|
|
||||||
_state &= ~StateOver;
|
|
||||||
emit stateChanged(oldState, ButtonByHover);
|
|
||||||
}
|
|
||||||
setMouseTracking(false);
|
setMouseTracking(false);
|
||||||
return TWidget::leaveEvent(e);
|
return TWidget::leaveEvent(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Button::enterEvent(QEvent *e) {
|
void Button::enterEvent(QEvent *e) {
|
||||||
if (!(_state & StateOver)) {
|
setOver(true, ButtonByHover);
|
||||||
int oldState = _state;
|
|
||||||
_state |= StateOver;
|
|
||||||
emit stateChanged(oldState, ButtonByHover);
|
|
||||||
}
|
|
||||||
setMouseTracking(true);
|
setMouseTracking(true);
|
||||||
return TWidget::enterEvent(e);
|
return TWidget::enterEvent(e);
|
||||||
}
|
}
|
||||||
|
@ -64,17 +56,9 @@ void Button::mousePressEvent(QMouseEvent *e) {
|
||||||
|
|
||||||
void Button::mouseMoveEvent(QMouseEvent *e) {
|
void Button::mouseMoveEvent(QMouseEvent *e) {
|
||||||
if (rect().contains(e->pos())) {
|
if (rect().contains(e->pos())) {
|
||||||
if (!(_state & StateOver)) {
|
setOver(true, ButtonByHover);
|
||||||
int oldState = _state;
|
|
||||||
_state |= StateOver;
|
|
||||||
emit stateChanged(oldState, ButtonByHover);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (_state & StateOver) {
|
setOver(false, ButtonByHover);
|
||||||
int oldState = _state;
|
|
||||||
_state &= ~StateOver;
|
|
||||||
emit stateChanged(oldState, ButtonByHover);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +75,18 @@ void Button::mouseReleaseEvent(QMouseEvent *e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Button::setOver(bool over, ButtonStateChangeSource source) {
|
||||||
|
if (over && !(_state & StateOver)) {
|
||||||
|
int oldState = _state;
|
||||||
|
_state |= StateOver;
|
||||||
|
emit stateChanged(oldState, source);
|
||||||
|
} else if (!over && (_state & StateOver)) {
|
||||||
|
int oldState = _state;
|
||||||
|
_state &= ~StateOver;
|
||||||
|
emit stateChanged(oldState, source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Button::setDisabled(bool disabled) {
|
void Button::setDisabled(bool disabled) {
|
||||||
int oldState = _state;
|
int oldState = _state;
|
||||||
if (disabled && !(_state & StateDisabled)) {
|
if (disabled && !(_state & StateDisabled)) {
|
||||||
|
|
|
@ -50,6 +50,7 @@ public:
|
||||||
int getState() const;
|
int getState() const;
|
||||||
|
|
||||||
void setDisabled(bool disabled = true);
|
void setDisabled(bool disabled = true);
|
||||||
|
void setOver(bool over, ButtonStateChangeSource source = ButtonByUser);
|
||||||
bool disabled() const {
|
bool disabled() const {
|
||||||
return (_state & StateDisabled);
|
return (_state & StateDisabled);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,48 +19,108 @@
|
||||||
|
|
||||||
#include "contextmenu.h"
|
#include "contextmenu.h"
|
||||||
#include "flatbutton.h"
|
#include "flatbutton.h"
|
||||||
|
#include "pspecific.h"
|
||||||
|
|
||||||
#include "lang.h"
|
#include "lang.h"
|
||||||
|
|
||||||
ContextMenu::ContextMenu(QWidget *parent) : QWidget(parent),
|
ContextMenu::ContextMenu(QWidget *parent, const style::iconedButton &st) : TWidget(parent),
|
||||||
_hiding(false), a_opacity(0) {
|
_hiding(false), _buttonStyle(st), _shadow(st::dropdownShadow), _selected(-1), a_opacity(0), _deleteOnHide(false) {
|
||||||
resetButtons();
|
resetActions();
|
||||||
|
|
||||||
setWindowFlags(Qt::FramelessWindowHint | Qt::BypassWindowManagerHint | Qt::Tool | Qt::NoDropShadowWindowHint);
|
setWindowFlags(Qt::FramelessWindowHint | Qt::BypassWindowManagerHint | Qt::Tool | Qt::NoDropShadowWindowHint | Qt::WindowStaysOnTopHint);
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
|
setAttribute(Qt::WA_NoSystemBackground, true);
|
||||||
|
setAttribute(Qt::WA_TranslucentBackground, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
FlatButton *ContextMenu::addButton(FlatButton *button) {
|
QAction *ContextMenu::addAction(const QString &text, const QObject *receiver, const char* member) {
|
||||||
button->setParent(this);
|
QAction *a = 0;
|
||||||
|
_actions.push_back(a = new QAction(text, this));
|
||||||
|
connect(a, SIGNAL(triggered(bool)), receiver, member);
|
||||||
|
connect(a, SIGNAL(changed()), this, SLOT(actionChanged()));
|
||||||
|
|
||||||
_width = qMax(_width, int(2 * st::dropdownBorder + button->width()));
|
IconedButton *b = 0;
|
||||||
if (!_buttons.isEmpty()) {
|
_buttons.push_back(b = new IconedButton(this, _buttonStyle, a->text()));
|
||||||
_height += st::dropdownBorder;
|
connect(b, SIGNAL(clicked()), this, SLOT(hideStart()));
|
||||||
|
connect(b, SIGNAL(clicked()), a, SIGNAL(triggered()));
|
||||||
|
connect(b, SIGNAL(stateChanged(int,ButtonStateChangeSource)), this, SLOT(buttonStateChanged(int,ButtonStateChangeSource)));
|
||||||
|
|
||||||
|
_width = qMax(_width, int(st::dropdownPadding.left() + st::dropdownPadding.right() + b->width()));
|
||||||
|
_height += b->height();
|
||||||
|
|
||||||
|
resize(_width, _height);
|
||||||
|
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
ContextMenu::Actions &ContextMenu::actions() {
|
||||||
|
return _actions;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContextMenu::actionChanged() {
|
||||||
|
for (int32 i = 0, l = _actions.size(); i < l; ++i) {
|
||||||
|
_buttons[i]->setText(_actions[i]->text());
|
||||||
}
|
}
|
||||||
_height += button->height();
|
|
||||||
|
|
||||||
_buttons.push_back(button);
|
|
||||||
|
|
||||||
resize(_width, _height);
|
|
||||||
|
|
||||||
return button;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextMenu::resetButtons() {
|
void ContextMenu::onActiveChanged() {
|
||||||
_width = 2 * st::dropdownBorder;
|
if (!windowHandle()->isActive()) {
|
||||||
_height = 2 * st::dropdownBorder;
|
hideStart();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContextMenu::buttonStateChanged(int oldState, ButtonStateChangeSource source) {
|
||||||
|
if (source == ButtonByUser) {
|
||||||
|
for (int32 i = 0, l = _buttons.size(); i < l; ++i) {
|
||||||
|
if (_buttons[i]->getState() & Button::StateOver) {
|
||||||
|
if (i != _selected) {
|
||||||
|
_buttons[i]->setOver(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (source == ButtonByHover) {
|
||||||
|
for (int32 i = 0, l = _buttons.size(); i < l; ++i) {
|
||||||
|
if (_buttons[i]->getState() & Button::StateOver) {
|
||||||
|
if (i != _selected) {
|
||||||
|
int32 sel = _selected;
|
||||||
|
_selected = i;
|
||||||
|
if (sel >= 0 && sel < _buttons.size()) {
|
||||||
|
_buttons[sel]->setOver(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContextMenu::resetActions() {
|
||||||
|
_width = st::dropdownPadding.left() + st::dropdownPadding.right();
|
||||||
|
_height = st::dropdownPadding.top() + st::dropdownPadding.bottom();
|
||||||
resize(_width, _height);
|
resize(_width, _height);
|
||||||
|
|
||||||
|
clearActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContextMenu::clearActions() {
|
||||||
for (int32 i = 0, l = _buttons.size(); i < l; ++i) {
|
for (int32 i = 0, l = _buttons.size(); i < l; ++i) {
|
||||||
delete _buttons[i];
|
delete _buttons[i];
|
||||||
}
|
}
|
||||||
_buttons.clear();
|
_buttons.clear();
|
||||||
|
|
||||||
|
for (int32 i = 0, l = _actions.size(); i < l; ++i) {
|
||||||
|
delete _actions[i];
|
||||||
|
}
|
||||||
|
_actions.clear();
|
||||||
|
|
||||||
|
_selected = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextMenu::resizeEvent(QResizeEvent *e) {
|
void ContextMenu::resizeEvent(QResizeEvent *e) {
|
||||||
int32 top = st::dropdownBorder;
|
int32 top = st::dropdownPadding.top();
|
||||||
for (Buttons::const_iterator i = _buttons.cbegin(), e = _buttons.cend(); i != e; ++i) {
|
for (Buttons::const_iterator i = _buttons.cbegin(), e = _buttons.cend(); i != e; ++i) {
|
||||||
(*i)->move(st::dropdownBorder, top);
|
(*i)->move(st::dropdownPadding.left(), top);
|
||||||
top += st::dropdownBorder + (*i)->height();
|
top += (*i)->height();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,20 +131,37 @@ void ContextMenu::paintEvent(QPaintEvent *e) {
|
||||||
p.setOpacity(a_opacity.current());
|
p.setOpacity(a_opacity.current());
|
||||||
}
|
}
|
||||||
|
|
||||||
// paint window border
|
QRect r(st::dropdownPadding.left(), st::dropdownPadding.top(), _width - st::dropdownPadding.left() - st::dropdownPadding.right(), _height - st::dropdownPadding.top() - st::dropdownPadding.bottom());
|
||||||
p.fillRect(QRect(0, 0, _width - st::dropdownBorder, st::dropdownBorder), st::dropdownBorderColor->b);
|
// draw shadow
|
||||||
p.fillRect(QRect(_width - st::dropdownBorder, 0, st::dropdownBorder, _height - st::dropdownBorder), st::dropdownBorderColor->b);
|
_shadow.paint(p, r);
|
||||||
p.fillRect(QRect(st::dropdownBorder, _height - st::dropdownBorder, _width - st::dropdownBorder, st::dropdownBorder), st::dropdownBorderColor->b);
|
}
|
||||||
p.fillRect(QRect(0, st::dropdownBorder, st::dropdownBorder, _height - st::dropdownBorder), st::dropdownBorderColor->b);
|
|
||||||
|
|
||||||
if (!_buttons.isEmpty()) { // paint separators
|
void ContextMenu::keyPressEvent(QKeyEvent *e) {
|
||||||
int32 top = st::dropdownBorder + _buttons.front()->height();
|
if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) {
|
||||||
p.setPen(st::dropdownBorderColor->p);
|
if (_selected >= 0 && _selected < _buttons.size()) {
|
||||||
for (int32 i = 1, s = _buttons.size(); i < s; ++i) {
|
emit _buttons[_selected]->clicked();
|
||||||
p.fillRect(st::dropdownBorder, top, _width - 2 * st::dropdownBorder, st::dropdownBorder, st::dropdownBorderColor->b);
|
return;
|
||||||
top += st::dropdownBorder + _buttons[i]->height();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ((e->key() != Qt::Key_Up && e->key() != Qt::Key_Down) || _buttons.size() < 1) return;
|
||||||
|
|
||||||
|
int32 newSelected = _selected + (e->key() == Qt::Key_Down ? 1 : -1);
|
||||||
|
if (_selected < 0 || _selected >= _buttons.size()) {
|
||||||
|
newSelected = e->key() == Qt::Key_Down ? 0 : (_buttons.size() - 1);
|
||||||
|
} else {
|
||||||
|
if (newSelected < 0) {
|
||||||
|
newSelected = _buttons.size() - 1;
|
||||||
|
} else if (newSelected >= _buttons.size()) {
|
||||||
|
newSelected = 0;
|
||||||
|
}
|
||||||
|
_buttons[_selected]->setOver(false);
|
||||||
|
}
|
||||||
|
_selected = newSelected;
|
||||||
|
_buttons[_selected]->setOver(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContextMenu::focusOutEvent(QFocusEvent *e) {
|
||||||
|
if (!_hiding) hideStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextMenu::fastHide() {
|
void ContextMenu::fastHide() {
|
||||||
|
@ -92,7 +169,7 @@ void ContextMenu::fastHide() {
|
||||||
anim::stop(this);
|
anim::stop(this);
|
||||||
}
|
}
|
||||||
a_opacity = anim::fvalue(0, 0);
|
a_opacity = anim::fvalue(0, 0);
|
||||||
hide();
|
hideFinish();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextMenu::adjustButtons() {
|
void ContextMenu::adjustButtons() {
|
||||||
|
@ -102,6 +179,8 @@ void ContextMenu::adjustButtons() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextMenu::hideStart() {
|
void ContextMenu::hideStart() {
|
||||||
|
if (isHidden()) return;
|
||||||
|
|
||||||
_hiding = true;
|
_hiding = true;
|
||||||
a_opacity.start(0);
|
a_opacity.start(0);
|
||||||
anim::start(this);
|
anim::start(this);
|
||||||
|
@ -109,16 +188,26 @@ void ContextMenu::hideStart() {
|
||||||
|
|
||||||
void ContextMenu::hideFinish() {
|
void ContextMenu::hideFinish() {
|
||||||
hide();
|
hide();
|
||||||
|
if (_deleteOnHide) {
|
||||||
|
deleteLater();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContextMenu::showStart() {
|
void ContextMenu::showStart() {
|
||||||
if (!isHidden() && a_opacity.current() == 1) {
|
if (!isHidden() && a_opacity.current() == 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
_selected = -1;
|
||||||
_hiding = false;
|
_hiding = false;
|
||||||
show();
|
|
||||||
a_opacity.start(1);
|
a_opacity.start(1);
|
||||||
anim::start(this);
|
anim::start(this);
|
||||||
|
animStep(0);
|
||||||
|
setParent(0);
|
||||||
|
psUpdateOverlayed(this);
|
||||||
|
show();
|
||||||
|
windowHandle()->requestActivate();
|
||||||
|
activateWindow();
|
||||||
|
setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ContextMenu::animStep(float64 ms) {
|
bool ContextMenu::animStep(float64 ms) {
|
||||||
|
@ -137,3 +226,27 @@ bool ContextMenu::animStep(float64 ms) {
|
||||||
update();
|
update();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ContextMenu::deleteOnHide() {
|
||||||
|
_deleteOnHide = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ContextMenu::popup(const QPoint &p) {
|
||||||
|
QPoint w = p - QPoint(st::dropdownPadding.left(), st::dropdownPadding.top());
|
||||||
|
QRect r = QDesktopWidget().screenGeometry(p);
|
||||||
|
if (w.x() + width() - st::dropdownPadding.right() > r.x() + r.width()) {
|
||||||
|
w.setX(r.x() + r.width() - width() + st::dropdownPadding.right());
|
||||||
|
}
|
||||||
|
if (w.y() + height() - st::dropdownPadding.bottom() > r.y() + r.height()) {
|
||||||
|
w.setY(p.y() - height() + st::dropdownPadding.bottom());
|
||||||
|
}
|
||||||
|
if (w.y() < 0) {
|
||||||
|
w.setY(0);
|
||||||
|
}
|
||||||
|
move(w);
|
||||||
|
showStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
ContextMenu::~ContextMenu() {
|
||||||
|
clearActions();
|
||||||
|
}
|
||||||
|
|
|
@ -18,25 +18,35 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QtWidgets/QWidget>
|
#include <QtWidgets/QWidget>
|
||||||
|
#include "gui/boxshadow.h"
|
||||||
|
|
||||||
class FlatButton;
|
class ContextMenu : public TWidget, public Animated {
|
||||||
|
|
||||||
class ContextMenu : public QWidget, public Animated {
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ContextMenu(QWidget *parent);
|
ContextMenu(QWidget *parent, const style::iconedButton &st = st::btnContext);
|
||||||
FlatButton *addButton(FlatButton *button);
|
QAction *addAction(const QString &text, const QObject *receiver, const char* member);
|
||||||
void resetButtons();
|
void resetActions();
|
||||||
|
|
||||||
|
typedef QVector<QAction*> Actions;
|
||||||
|
Actions &actions();
|
||||||
|
|
||||||
void resizeEvent(QResizeEvent *e);
|
void resizeEvent(QResizeEvent *e);
|
||||||
void paintEvent(QPaintEvent *e);
|
void paintEvent(QPaintEvent *e);
|
||||||
|
void keyPressEvent(QKeyEvent *e);
|
||||||
|
|
||||||
|
void focusOutEvent(QFocusEvent *e);
|
||||||
|
|
||||||
void fastHide();
|
void fastHide();
|
||||||
|
|
||||||
bool animStep(float64 ms);
|
bool animStep(float64 ms);
|
||||||
|
|
||||||
|
void deleteOnHide();
|
||||||
|
void popup(const QPoint &p);
|
||||||
|
|
||||||
|
~ContextMenu();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void hideStart();
|
void hideStart();
|
||||||
|
@ -44,16 +54,31 @@ public slots:
|
||||||
|
|
||||||
void showStart();
|
void showStart();
|
||||||
|
|
||||||
|
void actionChanged();
|
||||||
|
|
||||||
|
void onActiveChanged();
|
||||||
|
void buttonStateChanged(int oldState, ButtonStateChangeSource source);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
void clearActions();
|
||||||
void adjustButtons();
|
void adjustButtons();
|
||||||
|
|
||||||
typedef QVector<FlatButton*> Buttons;
|
typedef QVector<IconedButton*> Buttons;
|
||||||
Buttons _buttons;
|
Buttons _buttons;
|
||||||
|
|
||||||
|
Actions _actions;
|
||||||
|
|
||||||
int32 _width, _height;
|
int32 _width, _height;
|
||||||
bool _hiding;
|
bool _hiding;
|
||||||
|
|
||||||
|
const style::iconedButton &_buttonStyle;
|
||||||
|
|
||||||
|
BoxShadow _shadow;
|
||||||
|
int32 _selected;
|
||||||
|
|
||||||
anim::fvalue a_opacity;
|
anim::fvalue a_opacity;
|
||||||
|
|
||||||
|
bool _deleteOnHide;
|
||||||
|
|
||||||
};
|
};
|
|
@ -150,6 +150,11 @@ void IconedButton::setOpacity(float64 opacity) {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IconedButton::setText(const QString &text) {
|
||||||
|
_text = text;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
bool IconedButton::animStep(float64 ms) {
|
bool IconedButton::animStep(float64 ms) {
|
||||||
float64 dt = ms / _st.duration;
|
float64 dt = ms / _st.duration;
|
||||||
bool res = true;
|
bool res = true;
|
||||||
|
|
|
@ -97,6 +97,8 @@ public:
|
||||||
|
|
||||||
void setOpacity(float64 o);
|
void setOpacity(float64 o);
|
||||||
|
|
||||||
|
void setText(const QString &text);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void onStateChange(int oldState, ButtonStateChangeSource source);
|
void onStateChange(int oldState, ButtonStateChangeSource source);
|
||||||
|
|
|
@ -34,6 +34,10 @@ public:
|
||||||
virtual void leaveToChildEvent(QEvent *e) { // e -- from enterEvent() of child TWidget
|
virtual void leaveToChildEvent(QEvent *e) { // e -- from enterEvent() of child TWidget
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool event(QEvent *e) {
|
||||||
|
return QWidget::event(e);
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void enterEvent(QEvent *e) {
|
void enterEvent(QEvent *e) {
|
||||||
|
|
|
@ -617,21 +617,21 @@ void HistoryList::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
|
|
||||||
_contextMenuLnk = textlnkOver();
|
_contextMenuLnk = textlnkOver();
|
||||||
if (_contextMenuLnk && dynamic_cast<TextLink*>(_contextMenuLnk.data())) {
|
if (_contextMenuLnk && dynamic_cast<TextLink*>(_contextMenuLnk.data())) {
|
||||||
_menu = new QMenu(historyWidget);
|
_menu = new ContextMenu(historyWidget);
|
||||||
if (isUponSelected > 0) {
|
if (isUponSelected > 0) {
|
||||||
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
_menu->addAction(lang(lng_context_open_link), this, SLOT(openContextUrl()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_open_link), this, SLOT(openContextUrl()))->setEnabled(true);
|
||||||
_menu->addAction(lang(lng_context_copy_link), this, SLOT(copyContextUrl()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_link), this, SLOT(copyContextUrl()))->setEnabled(true);
|
||||||
} else if (_contextMenuLnk && dynamic_cast<EmailLink*>(_contextMenuLnk.data())) {
|
} else if (_contextMenuLnk && dynamic_cast<EmailLink*>(_contextMenuLnk.data())) {
|
||||||
_menu = new QMenu(historyWidget);
|
_menu = new ContextMenu(historyWidget);
|
||||||
if (isUponSelected > 0) {
|
if (isUponSelected > 0) {
|
||||||
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
_menu->addAction(lang(lng_context_open_email), this, SLOT(openContextUrl()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_open_email), this, SLOT(openContextUrl()))->setEnabled(true);
|
||||||
_menu->addAction(lang(lng_context_copy_email), this, SLOT(copyContextUrl()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_email), this, SLOT(copyContextUrl()))->setEnabled(true);
|
||||||
} else if (_contextMenuLnk && dynamic_cast<HashtagLink*>(_contextMenuLnk.data())) {
|
} else if (_contextMenuLnk && dynamic_cast<HashtagLink*>(_contextMenuLnk.data())) {
|
||||||
_menu = new QMenu(historyWidget);
|
_menu = new ContextMenu(historyWidget);
|
||||||
if (isUponSelected > 0) {
|
if (isUponSelected > 0) {
|
||||||
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -643,7 +643,7 @@ void HistoryList::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
AudioLink *lnkAudio = dynamic_cast<AudioLink*>(_contextMenuLnk.data());
|
AudioLink *lnkAudio = dynamic_cast<AudioLink*>(_contextMenuLnk.data());
|
||||||
DocumentLink *lnkDocument = dynamic_cast<DocumentLink*>(_contextMenuLnk.data());
|
DocumentLink *lnkDocument = dynamic_cast<DocumentLink*>(_contextMenuLnk.data());
|
||||||
if (lnkPhoto || lnkVideo || lnkAudio || lnkDocument) {
|
if (lnkPhoto || lnkVideo || lnkAudio || lnkDocument) {
|
||||||
_menu = new QMenu(historyWidget);
|
_menu = new ContextMenu(historyWidget);
|
||||||
if (isUponSelected > 0) {
|
if (isUponSelected > 0) {
|
||||||
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -682,29 +682,29 @@ void HistoryList::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
HistoryServiceMsg *srv = dynamic_cast<HistoryServiceMsg*>(item);
|
HistoryServiceMsg *srv = dynamic_cast<HistoryServiceMsg*>(item);
|
||||||
|
|
||||||
if (isUponSelected > 0) {
|
if (isUponSelected > 0) {
|
||||||
if (!_menu) _menu = new QMenu(this);
|
if (!_menu) _menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true);
|
||||||
} else if (item && !isUponSelected && !_contextMenuLnk) {
|
} else if (item && !isUponSelected && !_contextMenuLnk) {
|
||||||
QString contextMenuText = item->selectedText(FullItemSel);
|
QString contextMenuText = item->selectedText(FullItemSel);
|
||||||
if (!contextMenuText.isEmpty()) {
|
if (!contextMenuText.isEmpty()) {
|
||||||
if (!_menu) _menu = new QMenu(this);
|
if (!_menu) _menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang(lng_context_copy_text), this, SLOT(copyContextText()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_text), this, SLOT(copyContextText()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isUponSelected > 1) {
|
if (isUponSelected > 1) {
|
||||||
if (!_menu) _menu = new QMenu(this);
|
if (!_menu) _menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang(lng_context_forward_selected), historyWidget, SLOT(onForwardSelected()));
|
_menu->addAction(lang(lng_context_forward_selected), historyWidget, SLOT(onForwardSelected()));
|
||||||
_menu->addAction(lang(lng_context_delete_selected), historyWidget, SLOT(onDeleteSelected()));
|
_menu->addAction(lang(lng_context_delete_selected), historyWidget, SLOT(onDeleteSelected()));
|
||||||
_menu->addAction(lang(lng_context_clear_selection), historyWidget, SLOT(onClearSelected()));
|
_menu->addAction(lang(lng_context_clear_selection), historyWidget, SLOT(onClearSelected()));
|
||||||
} else if (isUponSelected != -2) {
|
} else if (isUponSelected != -2) {
|
||||||
if (canForward) {
|
if (canForward) {
|
||||||
if (!_menu) _menu = new QMenu(this);
|
if (!_menu) _menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang(lng_context_forward_msg), historyWidget, SLOT(forwardMessage()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_forward_msg), historyWidget, SLOT(forwardMessage()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canDelete) {
|
if (canDelete) {
|
||||||
if (!_menu) _menu = new QMenu(this);
|
if (!_menu) _menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang((msg && msg->uploading()) ? lng_context_cancel_upload : lng_context_delete_msg), historyWidget, SLOT(deleteMessage()))->setEnabled(true);
|
_menu->addAction(lang((msg && msg->uploading()) ? lng_context_cancel_upload : lng_context_delete_msg), historyWidget, SLOT(deleteMessage()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -712,7 +712,7 @@ void HistoryList::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_menu) {
|
if (_menu) {
|
||||||
_menu->setAttribute(Qt::WA_DeleteOnClose);
|
_menu->deleteOnHide();
|
||||||
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
||||||
_menu->popup(e->globalPos());
|
_menu->popup(e->globalPos());
|
||||||
e->accept();
|
e->accept();
|
||||||
|
|
|
@ -155,7 +155,7 @@ private:
|
||||||
uint64 _touchSpeedTime, _touchAccelerationTime, _touchTime;
|
uint64 _touchSpeedTime, _touchAccelerationTime, _touchTime;
|
||||||
QTimer _touchScrollTimer;
|
QTimer _touchScrollTimer;
|
||||||
|
|
||||||
QMenu *_menu;
|
ContextMenu *_menu;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
|
||||||
#include "application.h"
|
#include "application.h"
|
||||||
#include "gui/filedialog.h"
|
#include "gui/filedialog.h"
|
||||||
|
|
||||||
MediaView::MediaView() : QWidget(App::wnd()),
|
MediaView::MediaView() : TWidget(App::wnd()),
|
||||||
_photo(0), _leftNavVisible(false), _rightNavVisible(false), _maxWidth(0), _maxHeight(0), _x(0), _y(0), _w(0), _full(-1),
|
_photo(0), _leftNavVisible(false), _rightNavVisible(false), _maxWidth(0), _maxHeight(0), _x(0), _y(0), _w(0), _full(-1),
|
||||||
_history(0), _peer(0), _user(0), _from(0), _index(-1), _msgid(0), _loadRequest(0), _over(OverNone), _down(OverNone), _lastAction(-st::medviewDeltaFromLastAction, -st::medviewDeltaFromLastAction),
|
_history(0), _peer(0), _user(0), _from(0), _index(-1), _msgid(0), _loadRequest(0), _over(OverNone), _down(OverNone), _lastAction(-st::medviewDeltaFromLastAction, -st::medviewDeltaFromLastAction),
|
||||||
_close(this, lang(lng_mediaview_close), st::medviewButton),
|
_close(this, lang(lng_mediaview_close), st::medviewButton),
|
||||||
|
@ -327,16 +327,7 @@ void MediaView::showPhoto(PhotoData *photo) {
|
||||||
_from = App::user(_photo->user);
|
_from = App::user(_photo->user);
|
||||||
updateControls();
|
updateControls();
|
||||||
if (isHidden()) {
|
if (isHidden()) {
|
||||||
#ifdef Q_OS_WIN
|
psUpdateOverlayed(this);
|
||||||
bool wm = testAttribute(Qt::WA_Mapped), wv = testAttribute(Qt::WA_WState_Visible);
|
|
||||||
if (!wm) setAttribute(Qt::WA_Mapped, true);
|
|
||||||
if (!wv) setAttribute(Qt::WA_WState_Visible, true);
|
|
||||||
update();
|
|
||||||
QEvent e(QEvent::UpdateRequest);
|
|
||||||
event(&e);
|
|
||||||
if (!wm) setAttribute(Qt::WA_Mapped, false);
|
|
||||||
if (!wv) setAttribute(Qt::WA_WState_Visible, false);
|
|
||||||
#endif
|
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -647,7 +638,7 @@ void MediaView::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
_menu->deleteLater();
|
_menu->deleteLater();
|
||||||
_menu = 0;
|
_menu = 0;
|
||||||
}
|
}
|
||||||
_menu = new QMenu(this);
|
_menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang(lng_context_save_image), this, SLOT(onSave()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_save_image), this, SLOT(onSave()))->setEnabled(true);
|
||||||
_menu->addAction(lang(lng_context_copy_image), this, SLOT(onCopy()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_copy_image), this, SLOT(onCopy()))->setEnabled(true);
|
||||||
_menu->addAction(lang(lng_context_close_image), this, SLOT(onClose()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_close_image), this, SLOT(onClose()))->setEnabled(true);
|
||||||
|
@ -657,7 +648,7 @@ void MediaView::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
} else if ((App::self() && App::self()->photoId == _photo->id) || (_photo->chat && _photo->chat->photoId == _photo->id)) {
|
} else if ((App::self() && App::self()->photoId == _photo->id) || (_photo->chat && _photo->chat->photoId == _photo->id)) {
|
||||||
_menu->addAction(lang(lng_context_delete_image), this, SLOT(onDelete()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_delete_image), this, SLOT(onDelete()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
_menu->setAttribute(Qt::WA_DeleteOnClose);
|
_menu->deleteOnHide();
|
||||||
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
||||||
_menu->popup(e->globalPos());
|
_menu->popup(e->globalPos());
|
||||||
e->accept();
|
e->accept();
|
||||||
|
|
|
@ -17,7 +17,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class MediaView : public QWidget, public RPCSender, public Animated {
|
class MediaView : public TWidget, public RPCSender, public Animated {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -107,7 +107,7 @@ private:
|
||||||
QPoint _lastAction;
|
QPoint _lastAction;
|
||||||
|
|
||||||
FlatButton _close, _save, _forward, _delete;
|
FlatButton _close, _save, _forward, _delete;
|
||||||
QMenu *_menu;
|
ContextMenu *_menu;
|
||||||
bool _receiveMouse;
|
bool _receiveMouse;
|
||||||
|
|
||||||
bool _touchPress, _touchMove, _touchRightButton;
|
bool _touchPress, _touchMove, _touchRightButton;
|
||||||
|
|
|
@ -1038,7 +1038,7 @@ void OverviewInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
AudioLink *lnkAudio = dynamic_cast<AudioLink*>(_contextMenuLnk.data());
|
AudioLink *lnkAudio = dynamic_cast<AudioLink*>(_contextMenuLnk.data());
|
||||||
DocumentLink *lnkDocument = dynamic_cast<DocumentLink*>(_contextMenuLnk.data());
|
DocumentLink *lnkDocument = dynamic_cast<DocumentLink*>(_contextMenuLnk.data());
|
||||||
if (lnkPhoto || lnkVideo || lnkAudio || lnkDocument) {
|
if (lnkPhoto || lnkVideo || lnkAudio || lnkDocument) {
|
||||||
_menu = new QMenu(_overview);
|
_menu = new ContextMenu(_overview);
|
||||||
if (App::hoveredLinkItem()) {
|
if (App::hoveredLinkItem()) {
|
||||||
_menu->addAction(lang(lng_context_to_msg), this, SLOT(goToMessage()))->setEnabled(true);
|
_menu->addAction(lang(lng_context_to_msg), this, SLOT(goToMessage()))->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
@ -1068,7 +1068,7 @@ void OverviewInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
App::contextItem(App::hoveredLinkItem());
|
App::contextItem(App::hoveredLinkItem());
|
||||||
}
|
}
|
||||||
if (_menu) {
|
if (_menu) {
|
||||||
_menu->setAttribute(Qt::WA_DeleteOnClose);
|
_menu->deleteOnHide();
|
||||||
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
||||||
_menu->popup(e->globalPos());
|
_menu->popup(e->globalPos());
|
||||||
e->accept();
|
e->accept();
|
||||||
|
|
|
@ -178,7 +178,7 @@ private:
|
||||||
uint64 _touchSpeedTime, _touchAccelerationTime, _touchTime;
|
uint64 _touchSpeedTime, _touchAccelerationTime, _touchTime;
|
||||||
QTimer _touchScrollTimer;
|
QTimer _touchScrollTimer;
|
||||||
|
|
||||||
QMenu *_menu;
|
ContextMenu *_menu;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OverviewWidget : public QWidget, public RPCSender, public Animated {
|
class OverviewWidget : public QWidget, public RPCSender, public Animated {
|
||||||
|
|
|
@ -710,9 +710,9 @@ void ProfileInner::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
if (!_phoneText.isEmpty()) {
|
if (!_phoneText.isEmpty()) {
|
||||||
QRect info(_left + st::profilePhotoSize + st::profilePhoneLeft, st::profilePadding.top(), _width - st::profilePhotoSize - st::profilePhoneLeft, st::profilePhotoSize);
|
QRect info(_left + st::profilePhotoSize + st::profilePhoneLeft, st::profilePadding.top(), _width - st::profilePhotoSize - st::profilePhoneLeft, st::profilePhotoSize);
|
||||||
if (info.contains(mapFromGlobal(e->globalPos()))) {
|
if (info.contains(mapFromGlobal(e->globalPos()))) {
|
||||||
_menu = new QMenu(this);
|
_menu = new ContextMenu(this);
|
||||||
_menu->addAction(lang(lng_profile_copy_phone), this, SLOT(onCopyPhone()))->setEnabled(true);
|
_menu->addAction(lang(lng_profile_copy_phone), this, SLOT(onCopyPhone()))->setEnabled(true);
|
||||||
_menu->setAttribute(Qt::WA_DeleteOnClose);
|
_menu->deleteOnHide();
|
||||||
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*)));
|
||||||
_menu->popup(e->globalPos());
|
_menu->popup(e->globalPos());
|
||||||
e->accept();
|
e->accept();
|
||||||
|
|
|
@ -152,7 +152,7 @@ private:
|
||||||
QPoint _lastPos;
|
QPoint _lastPos;
|
||||||
|
|
||||||
QString _onlineText;
|
QString _onlineText;
|
||||||
QMenu *_menu;
|
ContextMenu *_menu;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,9 @@ void PsMainWindow::psIdleTimeout() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PsMainWindow::psShowTrayMenu() {
|
||||||
|
}
|
||||||
|
|
||||||
bool PsMainWindow::psIsOnline(int state) const {
|
bool PsMainWindow::psIsOnline(int state) const {
|
||||||
if (state < 0) state = this->windowState();
|
if (state < 0) state = this->windowState();
|
||||||
if (state & Qt::WindowMinimized) {
|
if (state & Qt::WindowMinimized) {
|
||||||
|
@ -1010,3 +1013,6 @@ void psAutoStart(bool start, bool silent) {
|
||||||
|
|
||||||
void psSendToMenu(bool send, bool silent) {
|
void psSendToMenu(bool send, bool silent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void psUpdateOverlayed(QWidget *widget) {
|
||||||
|
}
|
||||||
|
|
|
@ -78,6 +78,7 @@ public slots:
|
||||||
void psUpdateDelegate();
|
void psUpdateDelegate();
|
||||||
void psSavePosition(Qt::WindowState state = Qt::WindowActive);
|
void psSavePosition(Qt::WindowState state = Qt::WindowActive);
|
||||||
void psIdleTimeout();
|
void psIdleTimeout();
|
||||||
|
void psShowTrayMenu();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -181,3 +182,5 @@ void psOpenFile(const QString &name, bool openWith = false);
|
||||||
void psShowInFolder(const QString &name);
|
void psShowInFolder(const QString &name);
|
||||||
void psStart();
|
void psStart();
|
||||||
void psFinish();
|
void psFinish();
|
||||||
|
|
||||||
|
void psUpdateOverlayed(QWidget *widget);
|
||||||
|
|
|
@ -96,6 +96,9 @@ void PsMainWindow::psIdleTimeout() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PsMainWindow::psShowTrayMenu() {
|
||||||
|
}
|
||||||
|
|
||||||
bool PsMainWindow::psIsOnline(int state) const {
|
bool PsMainWindow::psIsOnline(int state) const {
|
||||||
if (state < 0) state = this->windowState();
|
if (state < 0) state = this->windowState();
|
||||||
if (state & Qt::WindowMinimized) {
|
if (state & Qt::WindowMinimized) {
|
||||||
|
@ -137,9 +140,10 @@ void PsMainWindow::psUpdateWorkmode() {
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case dbiwmWindowOnly: {
|
case dbiwmWindowOnly: {
|
||||||
if (trayIconMenu) trayIconMenu->deleteLater();
|
if (trayIcon) {
|
||||||
trayIconMenu = 0;
|
trayIcon->setContextMenu(0);
|
||||||
if (trayIcon) trayIcon->deleteLater();
|
trayIcon->deleteLater();
|
||||||
|
}
|
||||||
trayIcon = 0;
|
trayIcon = 0;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
@ -972,3 +976,6 @@ void psAutoStart(bool start, bool silent) {
|
||||||
|
|
||||||
void psSendToMenu(bool send, bool silent) {
|
void psSendToMenu(bool send, bool silent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void psUpdateOverlayed(QWidget *widget) {
|
||||||
|
}
|
||||||
|
|
|
@ -88,6 +88,7 @@ public slots:
|
||||||
void psUpdateDelegate();
|
void psUpdateDelegate();
|
||||||
void psSavePosition(Qt::WindowState state = Qt::WindowActive);
|
void psSavePosition(Qt::WindowState state = Qt::WindowActive);
|
||||||
void psIdleTimeout();
|
void psIdleTimeout();
|
||||||
|
void psShowTrayMenu();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -197,3 +198,5 @@ void psOpenFile(const QString &name, bool openWith = false);
|
||||||
void psShowInFolder(const QString &name);
|
void psShowInFolder(const QString &name);
|
||||||
void psStart();
|
void psStart();
|
||||||
void psFinish();
|
void psFinish();
|
||||||
|
|
||||||
|
void psUpdateOverlayed(QWidget *widget);
|
||||||
|
|
|
@ -891,6 +891,10 @@ void PsMainWindow::psIdleTimeout() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PsMainWindow::psShowTrayMenu() {
|
||||||
|
trayIconMenu->popup(QCursor::pos());
|
||||||
|
}
|
||||||
|
|
||||||
bool PsMainWindow::psIsActive(int state) const {
|
bool PsMainWindow::psIsActive(int state) const {
|
||||||
if (state < 0) state = this->windowState();
|
if (state < 0) state = this->windowState();
|
||||||
return isActiveWindow() && isVisible() && !(state & Qt::WindowMinimized) && !psIdle;
|
return isActiveWindow() && isVisible() && !(state & Qt::WindowMinimized) && !psIdle;
|
||||||
|
@ -956,9 +960,10 @@ void PsMainWindow::psUpdateWorkmode() {
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case dbiwmWindowOnly: {
|
case dbiwmWindowOnly: {
|
||||||
if (trayIconMenu) trayIconMenu->deleteLater();
|
if (trayIcon) {
|
||||||
trayIconMenu = 0;
|
trayIcon->setContextMenu(0);
|
||||||
if (trayIcon) trayIcon->deleteLater();
|
trayIcon->deleteLater();
|
||||||
|
}
|
||||||
trayIcon = 0;
|
trayIcon = 0;
|
||||||
|
|
||||||
HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT);
|
HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT);
|
||||||
|
@ -2200,6 +2205,17 @@ void psSendToMenu(bool send, bool silent) {
|
||||||
_manageAppLnk(send, silent, CSIDL_SENDTO, L"-sendpath", L"Telegram send to link.\nYou can disable send to menu item in Telegram settings.");
|
_manageAppLnk(send, silent, CSIDL_SENDTO, L"-sendpath", L"Telegram send to link.\nYou can disable send to menu item in Telegram settings.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void psUpdateOverlayed(TWidget *widget) {
|
||||||
|
bool wm = widget->testAttribute(Qt::WA_Mapped), wv = widget->testAttribute(Qt::WA_WState_Visible);
|
||||||
|
if (!wm) widget->setAttribute(Qt::WA_Mapped, true);
|
||||||
|
if (!wv) widget->setAttribute(Qt::WA_WState_Visible, true);
|
||||||
|
widget->update();
|
||||||
|
QEvent e(QEvent::UpdateRequest);
|
||||||
|
widget->event(&e);
|
||||||
|
if (!wm) widget->setAttribute(Qt::WA_Mapped, false);
|
||||||
|
if (!wv) widget->setAttribute(Qt::WA_WState_Visible, false);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _NEED_WIN_GENERATE_DUMP
|
#ifdef _NEED_WIN_GENERATE_DUMP
|
||||||
static const WCHAR *_programName = AppName; // folder in APPDATA, if current path is unavailable for writing
|
static const WCHAR *_programName = AppName; // folder in APPDATA, if current path is unavailable for writing
|
||||||
static const WCHAR *_exeName = L"Telegram.exe";
|
static const WCHAR *_exeName = L"Telegram.exe";
|
||||||
|
|
|
@ -77,6 +77,7 @@ public slots:
|
||||||
void psUpdateDelegate();
|
void psUpdateDelegate();
|
||||||
void psSavePosition(Qt::WindowState state = Qt::WindowActive);
|
void psSavePosition(Qt::WindowState state = Qt::WindowActive);
|
||||||
void psIdleTimeout();
|
void psIdleTimeout();
|
||||||
|
void psShowTrayMenu();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
@ -84,7 +85,7 @@ protected:
|
||||||
|
|
||||||
bool posInited;
|
bool posInited;
|
||||||
QSystemTrayIcon *trayIcon;
|
QSystemTrayIcon *trayIcon;
|
||||||
QMenu *trayIconMenu;
|
ContextMenu *trayIconMenu;
|
||||||
QImage icon256;
|
QImage icon256;
|
||||||
|
|
||||||
virtual void setupTrayIcon() = 0;
|
virtual void setupTrayIcon() = 0;
|
||||||
|
@ -191,3 +192,5 @@ void psOpenFile(const QString &name, bool openWith = false);
|
||||||
void psShowInFolder(const QString &name);
|
void psShowInFolder(const QString &name);
|
||||||
void psStart();
|
void psStart();
|
||||||
void psFinish();
|
void psFinish();
|
||||||
|
|
||||||
|
void psUpdateOverlayed(TWidget *widget);
|
||||||
|
|
|
@ -336,15 +336,16 @@ NotifyWindow::~NotifyWindow() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::Window(QWidget *parent) : PsMainWindow(parent),
|
Window::Window(QWidget *parent) : PsMainWindow(parent),
|
||||||
intro(0), main(0), settings(0), layerBG(0), _topWidget(0),
|
intro(0), main(0), settings(0), layerBG(0), _topWidget(0),
|
||||||
_connecting(0), _tempDeleter(0), _tempDeleterThread(0), myIcon(QPixmap::fromImage(icon256)), dragging(false), _inactivePress(false), _mediaView(0) {
|
_connecting(0), _tempDeleter(0), _tempDeleterThread(0), myIcon(QPixmap::fromImage(icon256)), dragging(false), _inactivePress(false), _mediaView(0) {
|
||||||
|
|
||||||
icon16 = icon256.scaledToWidth(16, Qt::SmoothTransformation);
|
icon16 = icon256.scaledToWidth(16, Qt::SmoothTransformation);
|
||||||
icon32 = icon256.scaledToWidth(32, Qt::SmoothTransformation);
|
icon32 = icon256.scaledToWidth(32, Qt::SmoothTransformation);
|
||||||
icon64 = icon256.scaledToWidth(64, Qt::SmoothTransformation);
|
icon64 = icon256.scaledToWidth(64, Qt::SmoothTransformation);
|
||||||
|
|
||||||
if (objectName().isEmpty())
|
if (objectName().isEmpty()) {
|
||||||
setObjectName(qsl("MainWindow"));
|
setObjectName(qsl("MainWindow"));
|
||||||
|
}
|
||||||
resize(st::wndDefWidth, st::wndDefHeight);
|
resize(st::wndDefWidth, st::wndDefHeight);
|
||||||
setWindowOpacity(1);
|
setWindowOpacity(1);
|
||||||
setLocale(QLocale(QLocale::English, QLocale::UnitedStates));
|
setLocale(QLocale(QLocale::English, QLocale::UnitedStates));
|
||||||
|
@ -395,6 +396,21 @@ void Window::init() {
|
||||||
psUpdateWorkmode();
|
psUpdateWorkmode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::firstShow() {
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
trayIconMenu = new ContextMenu(this);
|
||||||
|
#else
|
||||||
|
trayIconMenu = new QMenu(this);
|
||||||
|
trayIconMenu->setFont(QFont("Tahoma"));
|
||||||
|
#endif
|
||||||
|
trayIconMenu->addAction(lang(lng_minimize_to_tray), this, SLOT(minimizeToTray()))->setEnabled(true);
|
||||||
|
trayIconMenu->addAction(lang(lng_quit_from_tray), this, SLOT(quitFromTray()))->setEnabled(true);
|
||||||
|
|
||||||
|
psFirstShow();
|
||||||
|
|
||||||
|
updateTrayMenu();
|
||||||
|
}
|
||||||
|
|
||||||
QWidget *Window::filedialogParent() {
|
QWidget *Window::filedialogParent() {
|
||||||
return (_mediaView && _mediaView->isVisible()) ? (QWidget*)_mediaView : (QWidget*)this;
|
return (_mediaView && _mediaView->isVisible()) ? (QWidget*)_mediaView : (QWidget*)this;
|
||||||
}
|
}
|
||||||
|
@ -770,22 +786,17 @@ void Window::setupTrayIcon() {
|
||||||
psUpdateDelegate();
|
psUpdateDelegate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::updateTrayMenu(int windowState) {
|
void Window::updateTrayMenu(bool force) {
|
||||||
bool active = psIsActive(windowState);
|
if (!trayIconMenu || cPlatform() == dbipWindows && !force) return;
|
||||||
if (trayIconMenu) {
|
|
||||||
trayIconMenu->deleteLater();
|
bool active = psIsActive();
|
||||||
trayIconMenu = 0;
|
QAction *first = trayIconMenu->actions().at(0);
|
||||||
}
|
first->setText(lang(active ? lng_minimize_to_tray : lng_open_from_tray));
|
||||||
if (active || cPlatform() != dbipMac) {
|
disconnect(first, SIGNAL(triggered(bool)), 0, 0);
|
||||||
trayIconMenu = new QMenu(this);
|
connect(first, SIGNAL(triggered(bool)), this, active ? SLOT(minimizeToTray()) : SLOT(showFromTray()));
|
||||||
trayIconMenu->setFont(QFont("Tahoma"));
|
#ifndef Q_OS_WIN
|
||||||
QAction *a;
|
trayIcon->setContextMenu((active || cPlatform() != dbipMac) ? trayIconMenu : 0);
|
||||||
a = trayIconMenu->addAction(lang(active ? lng_minimize_to_tray : lng_open_from_tray), this, active ? SLOT(minimizeToTray()) : SLOT(showFromTray()));
|
#endif
|
||||||
a->setEnabled(true);
|
|
||||||
a = trayIconMenu->addAction(lang(lng_quit_from_tray), this, SLOT(quitFromTray()));
|
|
||||||
a->setEnabled(true);
|
|
||||||
}
|
|
||||||
trayIcon->setContextMenu(trayIconMenu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::quitFromTray() {
|
void Window::quitFromTray() {
|
||||||
|
@ -859,7 +870,10 @@ void Window::showFromTray(QSystemTrayIcon::ActivationReason reason) {
|
||||||
|
|
||||||
void Window::toggleTray(QSystemTrayIcon::ActivationReason reason) {
|
void Window::toggleTray(QSystemTrayIcon::ActivationReason reason) {
|
||||||
if (trayIconMenu && cPlatform() == dbipMac) return;
|
if (trayIconMenu && cPlatform() == dbipMac) return;
|
||||||
if (reason != QSystemTrayIcon::Context) {
|
if (reason == QSystemTrayIcon::Context) {
|
||||||
|
updateTrayMenu(true);
|
||||||
|
QTimer::singleShot(1, this, SLOT(psShowTrayMenu()));
|
||||||
|
} else {
|
||||||
if (psIsActive()) {
|
if (psIsActive()) {
|
||||||
minimizeToTray();
|
minimizeToTray();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -133,6 +133,7 @@ public:
|
||||||
~Window();
|
~Window();
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
void firstShow();
|
||||||
|
|
||||||
QWidget *filedialogParent();
|
QWidget *filedialogParent();
|
||||||
|
|
||||||
|
@ -244,7 +245,7 @@ public slots:
|
||||||
void onTempDirClearFailed();
|
void onTempDirClearFailed();
|
||||||
|
|
||||||
void notifyFire();
|
void notifyFire();
|
||||||
void updateTrayMenu(int windowState = -1);
|
void updateTrayMenu(bool force = false);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
|
|
|
@ -186,6 +186,10 @@
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="GeneratedFiles\Debug\moc_contextmenu.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="GeneratedFiles\Debug\moc_countrycodeinput.cpp">
|
<ClCompile Include="GeneratedFiles\Debug\moc_countrycodeinput.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
@ -386,6 +390,10 @@
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="GeneratedFiles\Deploy\moc_contextmenu.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="GeneratedFiles\Deploy\moc_countrycodeinput.cpp">
|
<ClCompile Include="GeneratedFiles\Deploy\moc_countrycodeinput.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||||
|
@ -595,6 +603,10 @@
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="GeneratedFiles\Release\moc_contextmenu.cpp">
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||||
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="GeneratedFiles\Release\moc_countrycodeinput.cpp">
|
<ClCompile Include="GeneratedFiles\Release\moc_countrycodeinput.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||||
|
@ -776,6 +788,7 @@
|
||||||
<ClCompile Include="SourceFiles\gui\animation.cpp" />
|
<ClCompile Include="SourceFiles\gui\animation.cpp" />
|
||||||
<ClCompile Include="SourceFiles\gui\boxshadow.cpp" />
|
<ClCompile Include="SourceFiles\gui\boxshadow.cpp" />
|
||||||
<ClCompile Include="SourceFiles\gui\button.cpp" />
|
<ClCompile Include="SourceFiles\gui\button.cpp" />
|
||||||
|
<ClCompile Include="SourceFiles\gui\contextmenu.cpp" />
|
||||||
<ClCompile Include="SourceFiles\gui\countrycodeinput.cpp" />
|
<ClCompile Include="SourceFiles\gui\countrycodeinput.cpp" />
|
||||||
<ClCompile Include="SourceFiles\gui\countryinput.cpp" />
|
<ClCompile Include="SourceFiles\gui\countryinput.cpp" />
|
||||||
<ClCompile Include="SourceFiles\gui\emoji_config.cpp" />
|
<ClCompile Include="SourceFiles\gui\emoji_config.cpp" />
|
||||||
|
@ -1214,6 +1227,20 @@
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<ClInclude Include="SourceFiles\gui\boxshadow.h" />
|
<ClInclude Include="SourceFiles\gui\boxshadow.h" />
|
||||||
|
<CustomBuild Include="SourceFiles\gui\contextmenu.h">
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">Moc%27ing contextmenu.h...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/gui/contextmenu.h" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -D_WITH_DEBUG -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\OpenSSL-Win32\include" "-I.\..\..\Libraries\libogg-1.3.2\include" "-I.\..\..\Libraries\opus\include" "-I.\..\..\Libraries\opusfile\include" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.3.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.3.1\QtGui"</Command>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing contextmenu.h...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/gui/contextmenu.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\OpenSSL-Win32\include" "-I.\..\..\Libraries\libogg-1.3.2\include" "-I.\..\..\Libraries\opus\include" "-I.\..\..\Libraries\opusfile\include" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.3.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.3.1\QtGui"</Command>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing contextmenu.h...</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/gui/contextmenu.h" -DAL_LIBTYPE_STATIC -DUNICODE -D_WITH_DEBUG -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\OpenSSL-Win32\include" "-I.\..\..\Libraries\libogg-1.3.2\include" "-I.\..\..\Libraries\opus\include" "-I.\..\..\Libraries\opusfile\include" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.3.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.3.1\QtGui"</Command>
|
||||||
|
</CustomBuild>
|
||||||
<ClInclude Include="SourceFiles\gui\emoji_config.h" />
|
<ClInclude Include="SourceFiles\gui\emoji_config.h" />
|
||||||
<CustomBuild Include="SourceFiles\gui\flatcheckbox.h">
|
<CustomBuild Include="SourceFiles\gui\flatcheckbox.h">
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flatcheckbox.h...</Message>
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing flatcheckbox.h...</Message>
|
||||||
|
|
|
@ -704,6 +704,18 @@
|
||||||
<ClCompile Include="GeneratedFiles\Release\moc_audio.cpp">
|
<ClCompile Include="GeneratedFiles\Release\moc_audio.cpp">
|
||||||
<Filter>Generated Files\Release</Filter>
|
<Filter>Generated Files\Release</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="SourceFiles\gui\contextmenu.cpp">
|
||||||
|
<Filter>gui</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="GeneratedFiles\Deploy\moc_contextmenu.cpp">
|
||||||
|
<Filter>Generated Files\Deploy</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="GeneratedFiles\Debug\moc_contextmenu.cpp">
|
||||||
|
<Filter>Generated Files\Debug</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="GeneratedFiles\Release\moc_contextmenu.cpp">
|
||||||
|
<Filter>Generated Files\Release</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="SourceFiles\stdafx.h">
|
<ClInclude Include="SourceFiles\stdafx.h">
|
||||||
|
@ -951,6 +963,9 @@
|
||||||
<CustomBuild Include="SourceFiles\audio.h">
|
<CustomBuild Include="SourceFiles\audio.h">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="SourceFiles\gui\contextmenu.h">
|
||||||
|
<Filter>gui</Filter>
|
||||||
|
</CustomBuild>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="SourceFiles\art\iconround256.ico" />
|
<Image Include="SourceFiles\art\iconround256.ico" />
|
||||||
|
|
Loading…
Reference in New Issue