Browse Source

Merge PR57

pull/74/head
Tux3 / Mlkj / !Lev.uXFMLA 11 years ago
parent
commit
0a41c0d712
  1. 11
      core.cpp
  2. 3
      core.h
  3. 1
      friend.h
  4. 5262
      widget.ui
  5. 1
      widget/filetransfertwidget.cpp
  6. 2
      widget/form/addfriendform.cpp
  7. 8
      widget/friendwidget.cpp
  8. 1
      widget/friendwidget.h
  9. 7
      widget/groupwidget.cpp
  10. 1
      widget/groupwidget.h
  11. 159
      widget/widget.cpp
  12. 9
      widget/widget.h

11
core.cpp

@ -39,14 +39,14 @@ Core::Core(Camera* cam) :
{ {
toxTimer = new QTimer(this); toxTimer = new QTimer(this);
toxTimer->setSingleShot(true); toxTimer->setSingleShot(true);
saveTimer = new QTimer(this); //saveTimer = new QTimer(this);
saveTimer->start(TOX_SAVE_INTERVAL); //saveTimer->start(TOX_SAVE_INTERVAL);
//fileTimer = new QTimer(this); //fileTimer = new QTimer(this);
//fileTimer->start(TOX_FILE_INTERVAL); //fileTimer->start(TOX_FILE_INTERVAL);
bootstrapTimer = new QTimer(this); bootstrapTimer = new QTimer(this);
bootstrapTimer->start(TOX_BOOTSTRAP_INTERVAL); bootstrapTimer->start(TOX_BOOTSTRAP_INTERVAL);
connect(toxTimer, &QTimer::timeout, this, &Core::process); connect(toxTimer, &QTimer::timeout, this, &Core::process);
connect(saveTimer, &QTimer::timeout, this, &Core::saveConfiguration); //connect(saveTimer, &QTimer::timeout, this, &Core::saveConfiguration); //Disable save timer in favor of saving on events
//connect(fileTimer, &QTimer::timeout, this, &Core::fileHeartbeat); //connect(fileTimer, &QTimer::timeout, this, &Core::fileHeartbeat);
connect(bootstrapTimer, &QTimer::timeout, this, &Core::onBootstrapTimer); connect(bootstrapTimer, &QTimer::timeout, this, &Core::onBootstrapTimer);
connect(&Settings::getInstance(), &Settings::dhtServerListChanged, this, &Core::bootstrapDht); connect(&Settings::getInstance(), &Settings::dhtServerListChanged, this, &Core::bootstrapDht);
@ -317,6 +317,7 @@ void Core::acceptFriendRequest(const QString& userId)
if (friendId == -1) { if (friendId == -1) {
emit failedToAddFriend(userId); emit failedToAddFriend(userId);
} else { } else {
saveConfiguration();
emit friendAdded(friendId, userId); emit friendAdded(friendId, userId);
} }
} }
@ -537,6 +538,7 @@ void Core::removeFriend(int friendId)
if (tox_del_friend(tox, friendId) == -1) { if (tox_del_friend(tox, friendId) == -1) {
emit failedToRemoveFriend(friendId); emit failedToRemoveFriend(friendId);
} else { } else {
saveConfiguration();
emit friendRemoved(friendId); emit friendRemoved(friendId);
} }
} }
@ -553,6 +555,7 @@ void Core::setUsername(const QString& username)
if (tox_set_name(tox, cUsername.data(), cUsername.size()) == -1) { if (tox_set_name(tox, cUsername.data(), cUsername.size()) == -1) {
emit failedToSetUsername(username); emit failedToSetUsername(username);
} else { } else {
saveConfiguration();
emit usernameSet(username); emit usernameSet(username);
} }
} }
@ -564,6 +567,7 @@ void Core::setStatusMessage(const QString& message)
if (tox_set_status_message(tox, cMessage.data(), cMessage.size()) == -1) { if (tox_set_status_message(tox, cMessage.data(), cMessage.size()) == -1) {
emit failedToSetStatusMessage(message); emit failedToSetStatusMessage(message);
} else { } else {
saveConfiguration();
emit statusMessageSet(message); emit statusMessageSet(message);
} }
} }
@ -587,6 +591,7 @@ void Core::setStatus(Status status)
} }
if (tox_set_user_status(tox, userstatus) == 0) { if (tox_set_user_status(tox, userstatus) == 0) {
saveConfiguration();
emit statusSet(status); emit statusSet(status);
} else { } else {
emit failedToSetStatus(status); emit failedToSetStatus(status);

3
core.h

@ -119,6 +119,8 @@ public:
void quitGroupChat(int groupId) const; void quitGroupChat(int groupId) const;
void dispatchVideoFrame(vpx_image img) const; void dispatchVideoFrame(vpx_image img) const;
void saveConfiguration();
public slots: public slots:
void start(); void start();
void process(); void process();
@ -261,7 +263,6 @@ private:
void onBootstrapTimer(); void onBootstrapTimer();
void loadConfiguration(); void loadConfiguration();
void saveConfiguration();
void loadFriends(); void loadFriends();
static void sendAllFileData(Core* core, ToxFile* file); static void sendAllFileData(Core* core, ToxFile* file);

1
friend.h

@ -22,6 +22,7 @@ public:
ChatForm* chatForm; ChatForm* chatForm;
int hasNewMessages; int hasNewMessages;
Status friendStatus; Status friendStatus;
QPixmap avatar;
}; };
#endif // FRIEND_H #endif // FRIEND_H

5262
widget.ui

File diff suppressed because it is too large Load Diff

1
widget/filetransfertwidget.cpp

@ -23,6 +23,7 @@ FileTransfertWidget::FileTransfertWidget(ToxFile File)
setAutoFillBackground(true); setAutoFillBackground(true);
setMinimumSize(250,58); setMinimumSize(250,58);
setMaximumHeight(58);
setLayout(mainLayout); setLayout(mainLayout);
mainLayout->setMargin(0); mainLayout->setMargin(0);

2
widget/form/addfriendform.cpp

@ -75,6 +75,8 @@ void AddFriendForm::onSendTriggered()
showWarning(tr("Please fill in a valid Tox ID","Tox ID of the friend you're sending a friend request to")); showWarning(tr("Please fill in a valid Tox ID","Tox ID of the friend you're sending a friend request to"));
} else if (isToxId(id)) { } else if (isToxId(id)) {
emit friendRequested(id, getMessage()); emit friendRequested(id, getMessage());
this->toxId.setText("");
this->message.setText("");
} else { } else {
id = id.replace("@", "._tox."); id = id.replace("@", "._tox.");
dns.setName(id); dns.setName(id);

8
widget/friendwidget.cpp

@ -11,11 +11,12 @@ FriendWidget::FriendWidget(int FriendId, QString id)
{ {
this->setMouseTracking(true); this->setMouseTracking(true);
this->setAutoFillBackground(true); this->setAutoFillBackground(true);
this->setLayout(&layout);
this->setFixedWidth(225); this->setFixedWidth(225);
this->setFixedHeight(55); this->setFixedHeight(55);
this->setLayout(&layout);
layout.setSpacing(0); layout.setSpacing(0);
layout.setMargin(0); layout.setMargin(0);
layout.setStretchFactor(this, 100);
textLayout.setSpacing(0); textLayout.setSpacing(0);
textLayout.setMargin(0); textLayout.setMargin(0);
@ -53,6 +54,11 @@ FriendWidget::FriendWidget(int FriendId, QString id)
isActiveWidget = 0; isActiveWidget = 0;
} }
void FriendWidget::setNewFixedWidth(int newWidth)
{
this->setFixedWidth(newWidth);
}
void FriendWidget::mouseReleaseEvent (QMouseEvent*) void FriendWidget::mouseReleaseEvent (QMouseEvent*)
{ {
emit friendWidgetClicked(this); emit friendWidgetClicked(this);

1
widget/friendwidget.h

@ -18,6 +18,7 @@ public:
void leaveEvent(QEvent* event); void leaveEvent(QEvent* event);
void setAsActiveChatroom(); void setAsActiveChatroom();
void setAsInactiveChatroom(); void setAsInactiveChatroom();
void setNewFixedWidth(int newWidth);
signals: signals:
void friendWidgetClicked(FriendWidget* widget); void friendWidgetClicked(FriendWidget* widget);

7
widget/groupwidget.cpp

@ -56,6 +56,11 @@ GroupWidget::GroupWidget(int GroupId, QString Name)
isActiveWidget = 0; isActiveWidget = 0;
} }
void GroupWidget::setNewFixedWidth(int newWidth)
{
this->setFixedWidth(newWidth);
}
void GroupWidget::mouseReleaseEvent (QMouseEvent*) void GroupWidget::mouseReleaseEvent (QMouseEvent*)
{ {
emit groupWidgetClicked(this); emit groupWidgetClicked(this);
@ -163,5 +168,5 @@ void GroupWidget::setAsInactiveChatroom()
QPalette pal3; QPalette pal3;
pal3.setColor(QPalette::Background, QColor(65,65,65,255)); pal3.setColor(QPalette::Background, QColor(65,65,65,255));
this->setPalette(pal3); this->setPalette(pal3);
avatar.setPixmap(QPixmap("img/group.png")); avatar.setPixmap(QPixmap(":img/group.png"));
} }

1
widget/groupwidget.h

@ -30,6 +30,7 @@ public:
QVBoxLayout textLayout; QVBoxLayout textLayout;
void setAsInactiveChatroom(); void setAsInactiveChatroom();
void setAsActiveChatroom(); void setAsActiveChatroom();
void setNewFixedWidth(int newWidth);
private: private:
QColor lastColor; QColor lastColor;

159
widget/widget.cpp

@ -38,7 +38,6 @@ Widget::Widget(QWidget *parent) :
if (useNativeTheme) if (useNativeTheme)
{ {
ui->titleBar->hide(); ui->titleBar->hide();
//setWindowFlags(windowFlags() & ~Qt::FramelessWindowHint);
this->layout()->setContentsMargins(0, 0, 0, 0); this->layout()->setContentsMargins(0, 0, 0, 0);
QString friendListStylesheet = ""; QString friendListStylesheet = "";
@ -89,13 +88,6 @@ Widget::Widget(QWidget *parent) :
setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::CustomizeWindowHint);
setWindowFlags(Qt::FramelessWindowHint); setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
setMouseTracking(true);
ui->titleBar->setMouseTracking(true);
ui->LTitle->setMouseTracking(true);
ui->tbMenu->setMouseTracking(true);
ui->pbMin->setMouseTracking(true);
ui->pbMax->setMouseTracking(true);
ui->pbClose->setMouseTracking(true);
addAction(ui->actionClose); addAction(ui->actionClose);
@ -116,7 +108,7 @@ Widget::Widget(QWidget *parent) :
QRect geo = settings.value("geometry").toRect(); QRect geo = settings.value("geometry").toRect();
if (geo.height() > 0 and geo.x() < QApplication::desktop()->width() and geo.width() > 0 and geo.y() < QApplication::desktop()->height()) if (geo.height() > 0 and geo.x() < QApplication::desktop()->width() and geo.width() > 0 and geo.y() < QApplication::desktop()->height())
setGeometry(geo); this->setGeometry(geo);
if (settings.value("maximized").toBool()) if (settings.value("maximized").toBool())
{ {
@ -134,7 +126,7 @@ Widget::Widget(QWidget *parent) :
isWindowMinimized = 0; isWindowMinimized = 0;
centralLayout = new QHBoxLayout(ui->centralWidget); //centralLayout = new QSplitter(ui->centralWidget);
ui->mainContent->setLayout(new QVBoxLayout()); ui->mainContent->setLayout(new QVBoxLayout());
@ -146,6 +138,7 @@ Widget::Widget(QWidget *parent) :
friendListWidget->layout()->setSpacing(0); friendListWidget->layout()->setSpacing(0);
friendListWidget->layout()->setMargin(0); friendListWidget->layout()->setMargin(0);
friendListWidget->setLayoutDirection(Qt::LeftToRight); friendListWidget->setLayoutDirection(Qt::LeftToRight);
//friendListWidget->
ui->friendList->setWidget(friendListWidget); ui->friendList->setWidget(friendListWidget);
ui->nameLabel->setText(Settings::getInstance().getUsername()); ui->nameLabel->setText(Settings::getInstance().getUsername());
@ -153,6 +146,25 @@ Widget::Widget(QWidget *parent) :
ui->statusLabel->setText(Settings::getInstance().getStatusMessage()); ui->statusLabel->setText(Settings::getInstance().getStatusMessage());
ui->statusLabel->label->setStyleSheet("QLabel { color : white; font-size: 8pt;}"); ui->statusLabel->label->setStyleSheet("QLabel { color : white; font-size: 8pt;}");
ui->friendList->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); ui->friendList->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->centralWidget->setStyleSheet("QSplitter{background-color: white;}");
this->setMouseTracking(true);
QList<QWidget*> widgets = this->findChildren<QWidget*>();
foreach (QWidget *widget, widgets)
widget->setMouseTracking(true);
ui->titleBar->setMouseTracking(true);
ui->LTitle->setMouseTracking(true);
ui->tbMenu->setMouseTracking(true);
ui->pbMin->setMouseTracking(true);
ui->pbMax->setMouseTracking(true);
ui->pbClose->setMouseTracking(true);
ui->statusHead->setMouseTracking(true);
QList<int> currentSizes = ui->centralWidget->sizes();
currentSizes[0] = 225;
ui->centralWidget->setSizes(currentSizes);
camera = new Camera; camera = new Camera;
camview = new SelfCamView(camera); camview = new SelfCamView(camera);
@ -194,6 +206,7 @@ Widget::Widget(QWidget *parent) :
connect(this, &Widget::friendRequested, core, &Core::requestFriendship); connect(this, &Widget::friendRequested, core, &Core::requestFriendship);
connect(this, &Widget::friendRequestAccepted, core, &Core::acceptFriendRequest); connect(this, &Widget::friendRequestAccepted, core, &Core::acceptFriendRequest);
connect(ui->centralWidget, SIGNAL(splitterMoved(int,int)),this, SLOT(splitterMoved(int,int)));
connect(ui->addButton, SIGNAL(clicked()), this, SLOT(onAddClicked())); connect(ui->addButton, SIGNAL(clicked()), this, SLOT(onAddClicked()));
connect(ui->groupButton, SIGNAL(clicked()), this, SLOT(onGroupClicked())); connect(ui->groupButton, SIGNAL(clicked()), this, SLOT(onGroupClicked()));
connect(ui->transferButton, SIGNAL(clicked()), this, SLOT(onTransferClicked())); connect(ui->transferButton, SIGNAL(clicked()), this, SLOT(onTransferClicked()));
@ -214,6 +227,7 @@ Widget::Widget(QWidget *parent) :
Widget::~Widget() Widget::~Widget()
{ {
core->saveConfiguration();
instance = nullptr; instance = nullptr;
coreThread->exit(); coreThread->exit();
coreThread->wait(); coreThread->wait();
@ -233,7 +247,6 @@ Widget::~Widget()
settings.setValue("maximized", isMaximized()); settings.setValue("maximized", isMaximized());
settings.setValue("useNativeTheme", useNativeTheme); settings.setValue("useNativeTheme", useNativeTheme);
delete ui; delete ui;
delete centralLayout;
} }
Widget* Widget::getInstance() Widget* Widget::getInstance()
@ -243,6 +256,23 @@ Widget* Widget::getInstance()
return instance; return instance;
} }
//Super ugly hack to enable resizable friend widgets
//There should be a way to set them to resize automagicly, but I can't seem to find it.
void Widget::splitterMoved(int, int)
{
updateFriendListWidth();
}
void Widget::updateFriendListWidth()
{
int newWidth = ui->friendList->width();
for (Friend* f : FriendList::friendList)
if (f->widget != nullptr)
f->widget->setNewFixedWidth(newWidth);
for (Group* g : GroupList::groupList)
if (g->widget != nullptr)
g->widget->setNewFixedWidth(newWidth);
}
QString Widget::getUsername() QString Widget::getUsername()
{ {
@ -380,6 +410,7 @@ void Widget::addFriend(int friendId, const QString &userId)
QWidget* widget = ui->friendList->widget(); QWidget* widget = ui->friendList->widget();
QLayout* layout = widget->layout(); QLayout* layout = widget->layout();
layout->addWidget(newfriend->widget); layout->addWidget(newfriend->widget);
updateFriendListWidth();
connect(newfriend->widget, SIGNAL(friendWidgetClicked(FriendWidget*)), this, SLOT(onFriendWidgetClicked(FriendWidget*))); connect(newfriend->widget, SIGNAL(friendWidgetClicked(FriendWidget*)), this, SLOT(onFriendWidgetClicked(FriendWidget*)));
connect(newfriend->widget, SIGNAL(removeFriend(int)), this, SLOT(removeFriend(int))); connect(newfriend->widget, SIGNAL(removeFriend(int)), this, SLOT(removeFriend(int)));
connect(newfriend->widget, SIGNAL(copyFriendIdToClipboard(int)), this, SLOT(copyFriendIdToClipboard(int))); connect(newfriend->widget, SIGNAL(copyFriendIdToClipboard(int)), this, SLOT(copyFriendIdToClipboard(int)));
@ -400,6 +431,7 @@ void Widget::addFriend(int friendId, const QString &userId)
connect(core, &Core::avEnding, newfriend->chatForm, &ChatForm::onAvEnding); connect(core, &Core::avEnding, newfriend->chatForm, &ChatForm::onAvEnding);
connect(core, &Core::avRequestTimeout, newfriend->chatForm, &ChatForm::onAvRequestTimeout); connect(core, &Core::avRequestTimeout, newfriend->chatForm, &ChatForm::onAvRequestTimeout);
connect(core, &Core::avPeerTimeout, newfriend->chatForm, &ChatForm::onAvPeerTimeout); connect(core, &Core::avPeerTimeout, newfriend->chatForm, &ChatForm::onAvPeerTimeout);
core->saveConfiguration();
} }
void Widget::addFriendFailed(const QString&) void Widget::addFriendFailed(const QString&)
@ -541,6 +573,7 @@ void Widget::onFriendRequestReceived(const QString& userId, const QString& messa
void Widget::removeFriend(int friendId) void Widget::removeFriend(int friendId)
{ {
Friend* f = FriendList::findFriend(friendId); Friend* f = FriendList::findFriend(friendId);
f->widget->setAsInactiveChatroom();
if (f->widget == activeFriendWidget) if (f->widget == activeFriendWidget)
activeFriendWidget = nullptr; activeFriendWidget = nullptr;
FriendList::removeFriend(friendId); FriendList::removeFriend(friendId);
@ -557,7 +590,6 @@ void Widget::copyFriendIdToClipboard(int friendId)
{ {
QClipboard *clipboard = QApplication::clipboard(); QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(f->userId, QClipboard::Clipboard); clipboard->setText(f->userId, QClipboard::Clipboard);
clipboard->deleteLater();
} }
} }
@ -643,6 +675,7 @@ void Widget::onGroupWidgetClicked(GroupWidget* widget)
void Widget::removeGroup(int groupId) void Widget::removeGroup(int groupId)
{ {
Group* g = GroupList::findGroup(groupId); Group* g = GroupList::findGroup(groupId);
g->widget->setAsInactiveChatroom();
if (g->widget == activeGroupWidget) if (g->widget == activeGroupWidget)
activeGroupWidget = nullptr; activeGroupWidget = nullptr;
GroupList::removeGroup(groupId); GroupList::removeGroup(groupId);
@ -671,6 +704,7 @@ Group *Widget::createGroup(int groupId)
QWidget* widget = ui->friendList->widget(); QWidget* widget = ui->friendList->widget();
QLayout* layout = widget->layout(); QLayout* layout = widget->layout();
layout->addWidget(newgroup->widget); layout->addWidget(newgroup->widget);
updateFriendListWidth();
connect(newgroup->widget, SIGNAL(groupWidgetClicked(GroupWidget*)), this, SLOT(onGroupWidgetClicked(GroupWidget*))); connect(newgroup->widget, SIGNAL(groupWidgetClicked(GroupWidget*)), this, SLOT(onGroupWidgetClicked(GroupWidget*)));
connect(newgroup->widget, SIGNAL(removeGroup(int)), this, SLOT(removeGroup(int))); connect(newgroup->widget, SIGNAL(removeGroup(int)), this, SLOT(removeGroup(int)));
connect(newgroup->chatForm, SIGNAL(sendMessage(int,QString)), core, SLOT(sendGroupMessage(int,QString))); connect(newgroup->chatForm, SIGNAL(sendMessage(int,QString)), core, SLOT(sendGroupMessage(int,QString)));
@ -702,24 +736,64 @@ bool Widget::isFriendWidgetCurActiveWidget(Friend* f)
return true; return true;
} }
void Widget::resizeEvent(QResizeEvent *)
{
updateFriendListWidth();
}
void Widget::mouseMoveEvent(QMouseEvent *e) bool Widget::event(QEvent * e)
{ {
if (!useNativeTheme)
if( e->type() == QEvent::WindowStateChange )
{
if(windowState().testFlag(Qt::WindowMinimized) == true)
{
isWindowMinimized = 1;
}
}
else if (e->type() == QEvent::WindowActivate)
{
if (!useNativeTheme)
{
this->setObjectName("activeWindow");
this->style()->polish(this);
}
isWindowMinimized = 0;
if (isFriendWidgetActive && activeFriendWidget != nullptr)
{
Friend* f = FriendList::findFriend(activeFriendWidget->friendId);
f->hasNewMessages = 0;
updateFriendStatusLights(f->friendId);
}
else if (isGroupWidgetActive && activeGroupWidget != nullptr)
{
Group* g = GroupList::findGroup(activeGroupWidget->groupId);
g->hasNewMessages = 0;
g->userWasMentioned = 0;
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat.png"));
}
}
else if (e->type() == QEvent::WindowDeactivate && !useNativeTheme)
{
this->setObjectName("inactiveWindow");
this->style()->polish(this);
}
else if (e->type() == QEvent::MouseMove && !useNativeTheme)
{ {
int xMouse = e->pos().x(); QMouseEvent *k = (QMouseEvent *)e;
int yMouse = e->pos().y(); int xMouse = k->pos().x();
int yMouse = k->pos().y();
int wWidth = this->geometry().width(); int wWidth = this->geometry().width();
int wHeight = this->geometry().height(); int wHeight = this->geometry().height();
if (moveWidget) if (moveWidget)
{ {
inResizeZone = false; inResizeZone = false;
moveWindow(e); moveWindow(k);
} }
else if (allowToResize) else if (allowToResize)
resizeWindow(e); resizeWindow(k);
//right //right
else if (xMouse >= wWidth - PIXELS_TO_ACT or allowToResize) else if (xMouse >= wWidth - PIXELS_TO_ACT or allowToResize)
{ {
@ -732,7 +806,7 @@ void Widget::mouseMoveEvent(QMouseEvent *e)
else else
setCursor(Qt::SizeHorCursor); setCursor(Qt::SizeHorCursor);
resizeWindow(e); resizeWindow(k);
} }
//left //left
else if (xMouse <= PIXELS_TO_ACT or allowToResize) else if (xMouse <= PIXELS_TO_ACT or allowToResize)
@ -746,7 +820,7 @@ void Widget::mouseMoveEvent(QMouseEvent *e)
else else
setCursor(Qt::SizeHorCursor); setCursor(Qt::SizeHorCursor);
resizeWindow(e); resizeWindow(k);
} }
//bottom edge //bottom edge
else if ((yMouse >= wHeight - PIXELS_TO_ACT) or allowToResize) else if ((yMouse >= wHeight - PIXELS_TO_ACT) or allowToResize)
@ -754,7 +828,7 @@ void Widget::mouseMoveEvent(QMouseEvent *e)
inResizeZone = true; inResizeZone = true;
setCursor(Qt::SizeVerCursor); setCursor(Qt::SizeVerCursor);
resizeWindow(e); resizeWindow(k);
} }
//Cursor part top //Cursor part top
else if (yMouse <= PIXELS_TO_ACT or allowToResize) else if (yMouse <= PIXELS_TO_ACT or allowToResize)
@ -762,7 +836,7 @@ void Widget::mouseMoveEvent(QMouseEvent *e)
inResizeZone = true; inResizeZone = true;
setCursor(Qt::SizeVerCursor); setCursor(Qt::SizeVerCursor);
resizeWindow(e); resizeWindow(k);
} }
else else
{ {
@ -772,44 +846,6 @@ void Widget::mouseMoveEvent(QMouseEvent *e)
e->accept(); e->accept();
} }
}
bool Widget::event(QEvent * e)
{
if (e->type() == QEvent::WindowStateChange)
{
if(windowState().testFlag(Qt::WindowMinimized) == true)
{
isWindowMinimized = 1;
}
}
else if (e->type() == QEvent::WindowActivate)
{
if (!useNativeTheme)
{
this->setObjectName("activeWindow");
this->style()->polish(this);
}
isWindowMinimized = 0;
if (isFriendWidgetActive && activeFriendWidget != nullptr)
{
Friend* f = FriendList::findFriend(activeFriendWidget->friendId);
f->hasNewMessages = 0;
updateFriendStatusLights(f->friendId);
}
else if (isGroupWidgetActive && activeGroupWidget != nullptr)
{
Group* g = GroupList::findGroup(activeGroupWidget->groupId);
g->hasNewMessages = 0;
g->userWasMentioned = 0;
g->widget->statusPic.setPixmap(QPixmap("img/status/dot_groupchat.png"));
}
}
else if (e->type() == QEvent::WindowDeactivate && !useNativeTheme)
{
this->setObjectName("inactiveWindow");
this->style()->polish(this);
}
return QWidget::event(e); return QWidget::event(e);
} }
@ -901,6 +937,7 @@ void Widget::moveWindow(QMouseEvent *e)
void Widget::resizeWindow(QMouseEvent *e) void Widget::resizeWindow(QMouseEvent *e)
{ {
updateFriendListWidth();
if (!useNativeTheme) if (!useNativeTheme)
{ {
if (allowToResize) if (allowToResize)
@ -1019,7 +1056,7 @@ void Widget::setCentralWidget(QWidget *widget, const QString &widgetName)
connect(widget, SIGNAL(cancelled()), this, SLOT(close())); connect(widget, SIGNAL(cancelled()), this, SLOT(close()));
centralLayout->addWidget(widget); centralLayout->addWidget(widget);
ui->centralWidget->setLayout(centralLayout); //ui->centralWidget->setLayout(centralLayout);
ui->LTitle->setText(widgetName); ui->LTitle->setText(widgetName);
} }

9
widget/widget.h

@ -44,6 +44,7 @@ public:
void updateFriendStatusLights(int friendId); void updateFriendStatusLights(int friendId);
int useNativeTheme; int useNativeTheme;
~Widget(); ~Widget();
void updateFriendListWidth();
signals: signals:
void friendRequestAccepted(const QString& userId); void friendRequestAccepted(const QString& userId);
@ -53,6 +54,9 @@ signals:
void usernameChanged(const QString& username); void usernameChanged(const QString& username);
void statusMessageChanged(const QString& statusMessage); void statusMessageChanged(const QString& statusMessage);
protected:
void resizeEvent(QResizeEvent *);
private slots: private slots:
void maximizeBtnClicked(); void maximizeBtnClicked();
void minimizeBtnClicked(); void minimizeBtnClicked();
@ -89,6 +93,7 @@ private slots:
void copyFriendIdToClipboard(int friendId); void copyFriendIdToClipboard(int friendId);
void removeGroup(int groupId); void removeGroup(int groupId);
void onStatusImgClicked(); void onStatusImgClicked();
void splitterMoved(int pos, int index);
protected slots: protected slots:
void moveWindow(QMouseEvent *e); void moveWindow(QMouseEvent *e);
@ -99,7 +104,7 @@ private:
private: private:
Ui::Widget *ui; Ui::Widget *ui;
QHBoxLayout *centralLayout; QSplitter *centralLayout;
QPoint dragPosition; QPoint dragPosition;
TitleMode m_titleMode; TitleMode m_titleMode;
bool moveWidget; bool moveWidget;
@ -109,7 +114,6 @@ private:
bool resizeHorEsq; bool resizeHorEsq;
bool resizeDiagSupEsq; bool resizeDiagSupEsq;
bool resizeDiagSupDer; bool resizeDiagSupDer;
void mouseMoveEvent(QMouseEvent *e);
void mousePressEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e);
void mouseDoubleClickEvent(QMouseEvent *e); void mouseDoubleClickEvent(QMouseEvent *e);
@ -127,6 +131,7 @@ private:
int isFriendWidgetActive, isGroupWidgetActive; int isFriendWidgetActive, isGroupWidgetActive;
SelfCamView* camview; SelfCamView* camview;
Camera* camera; Camera* camera;
bool notify(QObject *receiver, QEvent *event);
}; };
#endif // WIDGET_H #endif // WIDGET_H

Loading…
Cancel
Save