mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Merge PR57
This commit is contained in:
commit
0a41c0d712
11
core.cpp
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
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
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
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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"));
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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,81 +736,16 @@ bool Widget::isFriendWidgetCurActiveWidget(Friend* f)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Widget::resizeEvent(QResizeEvent *)
|
||||||
|
|
||||||
void Widget::mouseMoveEvent(QMouseEvent *e)
|
|
||||||
{
|
{
|
||||||
if (!useNativeTheme)
|
updateFriendListWidth();
|
||||||
{
|
|
||||||
int xMouse = e->pos().x();
|
|
||||||
int yMouse = e->pos().y();
|
|
||||||
int wWidth = this->geometry().width();
|
|
||||||
int wHeight = this->geometry().height();
|
|
||||||
|
|
||||||
if (moveWidget)
|
|
||||||
{
|
|
||||||
inResizeZone = false;
|
|
||||||
moveWindow(e);
|
|
||||||
}
|
|
||||||
else if (allowToResize)
|
|
||||||
resizeWindow(e);
|
|
||||||
//right
|
|
||||||
else if (xMouse >= wWidth - PIXELS_TO_ACT or allowToResize)
|
|
||||||
{
|
|
||||||
inResizeZone = true;
|
|
||||||
|
|
||||||
if (yMouse >= wHeight - PIXELS_TO_ACT)
|
|
||||||
setCursor(Qt::SizeFDiagCursor);
|
|
||||||
else if (yMouse <= PIXELS_TO_ACT)
|
|
||||||
setCursor(Qt::SizeBDiagCursor);
|
|
||||||
else
|
|
||||||
setCursor(Qt::SizeHorCursor);
|
|
||||||
|
|
||||||
resizeWindow(e);
|
|
||||||
}
|
|
||||||
//left
|
|
||||||
else if (xMouse <= PIXELS_TO_ACT or allowToResize)
|
|
||||||
{
|
|
||||||
inResizeZone = true;
|
|
||||||
|
|
||||||
if (yMouse >= wHeight - PIXELS_TO_ACT)
|
|
||||||
setCursor(Qt::SizeBDiagCursor);
|
|
||||||
else if (yMouse <= PIXELS_TO_ACT)
|
|
||||||
setCursor(Qt::SizeFDiagCursor);
|
|
||||||
else
|
|
||||||
setCursor(Qt::SizeHorCursor);
|
|
||||||
|
|
||||||
resizeWindow(e);
|
|
||||||
}
|
|
||||||
//bottom edge
|
|
||||||
else if ((yMouse >= wHeight - PIXELS_TO_ACT) or allowToResize)
|
|
||||||
{
|
|
||||||
inResizeZone = true;
|
|
||||||
setCursor(Qt::SizeVerCursor);
|
|
||||||
|
|
||||||
resizeWindow(e);
|
|
||||||
}
|
|
||||||
//Cursor part top
|
|
||||||
else if (yMouse <= PIXELS_TO_ACT or allowToResize)
|
|
||||||
{
|
|
||||||
inResizeZone = true;
|
|
||||||
setCursor(Qt::SizeVerCursor);
|
|
||||||
|
|
||||||
resizeWindow(e);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inResizeZone = false;
|
|
||||||
setCursor(Qt::ArrowCursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
e->accept();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Widget::event(QEvent * e)
|
bool Widget::event(QEvent * e)
|
||||||
{
|
{
|
||||||
if (e->type() == QEvent::WindowStateChange)
|
|
||||||
|
if( e->type() == QEvent::WindowStateChange )
|
||||||
{
|
{
|
||||||
if(windowState().testFlag(Qt::WindowMinimized) == true)
|
if(windowState().testFlag(Qt::WindowMinimized) == true)
|
||||||
{
|
{
|
||||||
@ -802,7 +771,7 @@ bool Widget::event(QEvent * e)
|
|||||||
Group* g = GroupList::findGroup(activeGroupWidget->groupId);
|
Group* g = GroupList::findGroup(activeGroupWidget->groupId);
|
||||||
g->hasNewMessages = 0;
|
g->hasNewMessages = 0;
|
||||||
g->userWasMentioned = 0;
|
g->userWasMentioned = 0;
|
||||||
g->widget->statusPic.setPixmap(QPixmap("img/status/dot_groupchat.png"));
|
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat.png"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (e->type() == QEvent::WindowDeactivate && !useNativeTheme)
|
else if (e->type() == QEvent::WindowDeactivate && !useNativeTheme)
|
||||||
@ -810,6 +779,73 @@ bool Widget::event(QEvent * e)
|
|||||||
this->setObjectName("inactiveWindow");
|
this->setObjectName("inactiveWindow");
|
||||||
this->style()->polish(this);
|
this->style()->polish(this);
|
||||||
}
|
}
|
||||||
|
else if (e->type() == QEvent::MouseMove && !useNativeTheme)
|
||||||
|
{
|
||||||
|
QMouseEvent *k = (QMouseEvent *)e;
|
||||||
|
int xMouse = k->pos().x();
|
||||||
|
int yMouse = k->pos().y();
|
||||||
|
int wWidth = this->geometry().width();
|
||||||
|
int wHeight = this->geometry().height();
|
||||||
|
|
||||||
|
if (moveWidget)
|
||||||
|
{
|
||||||
|
inResizeZone = false;
|
||||||
|
moveWindow(k);
|
||||||
|
}
|
||||||
|
else if (allowToResize)
|
||||||
|
resizeWindow(k);
|
||||||
|
//right
|
||||||
|
else if (xMouse >= wWidth - PIXELS_TO_ACT or allowToResize)
|
||||||
|
{
|
||||||
|
inResizeZone = true;
|
||||||
|
|
||||||
|
if (yMouse >= wHeight - PIXELS_TO_ACT)
|
||||||
|
setCursor(Qt::SizeFDiagCursor);
|
||||||
|
else if (yMouse <= PIXELS_TO_ACT)
|
||||||
|
setCursor(Qt::SizeBDiagCursor);
|
||||||
|
else
|
||||||
|
setCursor(Qt::SizeHorCursor);
|
||||||
|
|
||||||
|
resizeWindow(k);
|
||||||
|
}
|
||||||
|
//left
|
||||||
|
else if (xMouse <= PIXELS_TO_ACT or allowToResize)
|
||||||
|
{
|
||||||
|
inResizeZone = true;
|
||||||
|
|
||||||
|
if (yMouse >= wHeight - PIXELS_TO_ACT)
|
||||||
|
setCursor(Qt::SizeBDiagCursor);
|
||||||
|
else if (yMouse <= PIXELS_TO_ACT)
|
||||||
|
setCursor(Qt::SizeFDiagCursor);
|
||||||
|
else
|
||||||
|
setCursor(Qt::SizeHorCursor);
|
||||||
|
|
||||||
|
resizeWindow(k);
|
||||||
|
}
|
||||||
|
//bottom edge
|
||||||
|
else if ((yMouse >= wHeight - PIXELS_TO_ACT) or allowToResize)
|
||||||
|
{
|
||||||
|
inResizeZone = true;
|
||||||
|
setCursor(Qt::SizeVerCursor);
|
||||||
|
|
||||||
|
resizeWindow(k);
|
||||||
|
}
|
||||||
|
//Cursor part top
|
||||||
|
else if (yMouse <= PIXELS_TO_ACT or allowToResize)
|
||||||
|
{
|
||||||
|
inResizeZone = true;
|
||||||
|
setCursor(Qt::SizeVerCursor);
|
||||||
|
|
||||||
|
resizeWindow(k);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
inResizeZone = false;
|
||||||
|
setCursor(Qt::ArrowCursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
e->accept();
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user