1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge pull request #183 from krepa098/master

Fixes, cleanups, layout changes, improvements to smileys and more
This commit is contained in:
Tux3 / Mlkj / !Lev.uXFMLA 2014-08-11 22:51:16 +02:00
commit c4f83d60dd
34 changed files with 3703 additions and 3709 deletions

View File

@ -1405,6 +1405,8 @@ void Core::cleanupCall(int callId)
void Core::playCallAudio(ToxAv*, int32_t callId, int16_t *data, int length, void *user_data)
{
Q_UNUSED(user_data);
if (!calls[callId].active || calls[callId].audioOutput == nullptr)
return;
calls[callId].audioBuffer.write((char*)data, length*2);
@ -1451,6 +1453,8 @@ void Core::sendCallAudio(int callId, ToxAv* toxav)
void Core::playCallVideo(ToxAv*, int32_t callId, vpx_image_t* img, void *user_data)
{
Q_UNUSED(user_data);
if (!calls[callId].active || !calls[callId].videoEnabled)
return;

3262
mainwindow.ui Normal file

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qtox
TEMPLATE = app
FORMS += widget.ui
FORMS += \
mainwindow.ui
CONFIG += c++11
TRANSLATIONS = translations/de.ts \
@ -85,7 +86,9 @@ HEADERS += widget/form/addfriendform.h \
widget/netcamview.h \
widget/tool/clickablelabel.h \
smileypack.h \
widget/emoticonswidget.h
widget/emoticonswidget.h \
style.h \
widget/adjustingscrollarea.h
SOURCES += \
widget/form/addfriendform.cpp \
@ -119,4 +122,6 @@ SOURCES += \
widget/netcamview.cpp \
widget/tool/clickablelabel.cpp \
smileypack.cpp \
widget/emoticonswidget.cpp
widget/emoticonswidget.cpp \
style.cpp \
widget/adjustingscrollarea.cpp

View File

@ -114,5 +114,6 @@
<file>ui/emoticonWidget/dot_page.png</file>
<file>ui/emoticonWidget/dot_page_current.png</file>
<file>ui/emoticonWidget/emoticonWidget.css</file>
<file>ui/emoticonWidget/dot_page_hover.png</file>
</qresource>
</RCC>

View File

@ -94,7 +94,7 @@ void Settings::load()
s.beginGroup("GUI");
enableSmoothAnimation = s.value("smoothAnimation", true).toBool();
smileyPack = s.value("smileyPack", !SmileyPack::listSmileyPacks().empty() ? SmileyPack::listSmileyPacks()[0].second : "").toString();
smileyPack = s.value("smileyPack", QString()).toString();
customEmojiFont = s.value("customEmojiFont", true).toBool();
emojiFontFamily = s.value("emojiFontFamily", "DejaVu Sans").toString();
emojiFontPointSize = s.value("emojiFontPointSize", QApplication::font().pointSize()).toInt();
@ -102,12 +102,24 @@ void Settings::load()
secondColumnHandlePosFromRight = s.value("secondColumnHandlePosFromRight", 50).toInt();
timestampFormat = s.value("timestampFormat", "hh:mm").toString();
minimizeOnClose = s.value("minimizeOnClose", false).toBool();
useNativeStyle = s.value("nativeStyle", false).toBool();
useNativeDecoration = s.value("nativeDecoration", true).toBool();
s.endGroup();
s.beginGroup("State");
windowGeometry = s.value("windowGeometry", QByteArray()).toByteArray();
windowState = s.value("windowState", QByteArray()).toByteArray();
splitterState = s.value("splitterState", QByteArray()).toByteArray();
s.endGroup();
s.beginGroup("Privacy");
typingNotification = s.value("typingNotification", false).toBool();
s.endGroup();
// try to set a smiley pack if none is selected
if (!SmileyPack::isValid(smileyPack) && !SmileyPack::listSmileyPacks().isEmpty())
smileyPack = SmileyPack::listSmileyPacks()[0].second;
loaded = true;
}
@ -158,6 +170,14 @@ void Settings::save(QString path)
s.setValue("secondColumnHandlePosFromRight", secondColumnHandlePosFromRight);
s.setValue("timestampFormat", timestampFormat);
s.setValue("minimizeOnClose", minimizeOnClose);
s.setValue("nativeStyle", useNativeStyle);
s.setValue("nativeDecoration", useNativeDecoration);
s.endGroup();
s.beginGroup("State");
s.setValue("windowGeometry", windowGeometry);
s.setValue("windowState", windowState);
s.setValue("splitterState", splitterState);
s.endGroup();
s.beginGroup("Privacy");
@ -335,6 +355,56 @@ void Settings::setEmojiFontFamily(const QString &value)
emit emojiFontChanged();
}
bool Settings::getUseNativeStyle() const
{
return useNativeStyle;
}
void Settings::setUseNativeStyle(bool value)
{
useNativeStyle = value;
}
bool Settings::getUseNativeDecoration() const
{
return useNativeDecoration;
}
void Settings::setUseNativeDecoration(bool value)
{
useNativeDecoration = value;
}
QByteArray Settings::getWindowGeometry() const
{
return windowGeometry;
}
void Settings::setWindowGeometry(const QByteArray &value)
{
windowGeometry = value;
}
QByteArray Settings::getWindowState() const
{
return windowState;
}
void Settings::setWindowState(const QByteArray &value)
{
windowState = value;
}
QByteArray Settings::getSplitterState() const
{
return splitterState;
}
void Settings::setSplitterState(const QByteArray &value)
{
splitterState = value;
}
bool Settings::isMinimizeOnCloseEnabled() const
{
return minimizeOnClose;

View File

@ -112,6 +112,21 @@ public:
bool isTypingNotificationEnabled() const;
void setTypingNotification(bool enabled);
bool getUseNativeStyle() const;
void setUseNativeStyle(bool value);
bool getUseNativeDecoration() const;
void setUseNativeDecoration(bool value);
QByteArray getWindowGeometry() const;
void setWindowGeometry(const QByteArray &value);
QByteArray getWindowState() const;
void setWindowState(const QByteArray &value);
QByteArray getSplitterState() const;
void setSplitterState(const QByteArray &value);
private:
Settings();
Settings(Settings &settings) = delete;
@ -147,6 +162,11 @@ private:
QString emojiFontFamily;
int emojiFontPointSize;
bool minimizeOnClose;
bool useNativeStyle;
bool useNativeDecoration;
QByteArray windowGeometry;
QByteArray windowState;
QByteArray splitterState;
// ChatView
int firstColumnHandlePos;

View File

@ -57,6 +57,11 @@ QList<QPair<QString, QString> > SmileyPack::listSmileyPacks(const QString &path)
return smileyPacks;
}
bool SmileyPack::isValid(const QString &filename)
{
return QFile(filename).exists();
}
bool SmileyPack::load(const QString& filename)
{
// discard old data

View File

@ -22,13 +22,16 @@
#include <QString>
#include <QStringList>
#define SMILEYPACK_DEFAULT_PATH "./smileys"
//maps emoticons to smileys
class SmileyPack : public QObject
{
Q_OBJECT
public:
static SmileyPack& getInstance();
static QList<QPair<QString, QString>> listSmileyPacks(const QString& path = "./smileys");
static QList<QPair<QString, QString>> listSmileyPacks(const QString& path = SMILEYPACK_DEFAULT_PATH);
static bool isValid(const QString& filename);
bool load(const QString &filename);
QString smileyfied(QString msg);

35
style.cpp Normal file
View File

@ -0,0 +1,35 @@
/*
Copyright (C) 2014 by Project Tox <https://tox.im>
This file is part of qTox, a Qt-based graphical interface for Tox.
This program is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the COPYING file for more details.
*/
#include "style.h"
#include "settings.h"
#include <QFile>
#include <QDebug>
QString Style::get(const QString &filename)
{
if (!Settings::getInstance().getUseNativeStyle())
{
QFile file(filename);
if (file.open(QFile::ReadOnly | QFile::Text))
return file.readAll();
else
qWarning() << "Style " << filename << " not found";
}
return QString();
}

30
style.h Normal file
View File

@ -0,0 +1,30 @@
/*
Copyright (C) 2014 by Project Tox <https://tox.im>
This file is part of qTox, a Qt-based graphical interface for Tox.
This program is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the COPYING file for more details.
*/
#ifndef STYLE_H
#define STYLE_H
#include <QString>
class Style
{
public:
static QString get(const QString& filename);
private:
Style();
};
#endif // STYLE_H

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

View File

@ -9,8 +9,8 @@ QPushButton
QRadioButton::indicator
{
width: 13px;
height: 13px;
width: 10px;
height: 10px;
}
QRadioButton::indicator::unchecked
@ -20,12 +20,12 @@ QRadioButton::indicator::unchecked
QRadioButton::indicator:unchecked:hover
{
image: url(:/ui/emoticonWidget/dot_page.png);
image: url(:/ui/emoticonWidget/dot_page_hover.png);
}
QRadioButton::indicator:unchecked:pressed
{
image: url(:/ui/emoticonWidget/dot_page.png);
image: url(:/ui/emoticonWidget/dot_page_hover.png);
}
QRadioButton::indicator::checked
@ -33,17 +33,8 @@ QRadioButton::indicator::checked
image: url(:/ui/emoticonWidget/dot_page_current.png);
}
QRadioButton::indicator:checked:hover
{
image: url(:/ui/emoticonWidget/dot_page_current.png);
}
QRadioButton::indicator:checked:pressed
{
image: url(:/ui/emoticonWidget/dot_page.png);
}
QMenu
{
background-color: rgb(240,240,240); /* sets background of the menu */
}
border: 1px solid;
}

3341
widget.ui

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
/*
Copyright (C) 2014 by Project Tox <https://tox.im>
This file is part of qTox, a Qt-based graphical interface for Tox.
This program is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the COPYING file for more details.
*/
#include "adjustingscrollarea.h"
#include <QEvent>
#include <QLayout>
#include <QScrollBar>
#include <QDebug>
AdjustingScrollArea::AdjustingScrollArea(QWidget *parent) :
QScrollArea(parent)
{
}
void AdjustingScrollArea::resizeEvent(QResizeEvent *ev)
{
updateGeometry();
QScrollArea::resizeEvent(ev);
}
QSize AdjustingScrollArea::sizeHint() const
{
if (widget())
{
int scrollbarWidth = verticalScrollBar()->isVisible() ? verticalScrollBar()->width() : 0;
return widget()->sizeHint() + QSize(scrollbarWidth, 0);
}
return QScrollArea::sizeHint();
}

View File

@ -0,0 +1,36 @@
/*
Copyright (C) 2014 by Project Tox <https://tox.im>
This file is part of qTox, a Qt-based graphical interface for Tox.
This program is libre software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the COPYING file for more details.
*/
#ifndef ADJUSTINGSCROLLAREA_H
#define ADJUSTINGSCROLLAREA_H
#include <QScrollArea>
class AdjustingScrollArea : public QScrollArea
{
Q_OBJECT
public:
explicit AdjustingScrollArea(QWidget *parent = 0);
virtual void resizeEvent(QResizeEvent *ev);
virtual QSize sizeHint() const override;
signals:
public slots:
};
#endif // ADJUSTINGSCROLLAREA_H

View File

@ -267,11 +267,11 @@ vpx_image Camera::getLastVPXImage()
uint8_t* rgb = lastFrame.bits();
size_t i=0, j=0;
for( size_t line = 0; line < h; ++line )
for( int line = 0; line < h; ++line )
{
if( !(line % 2) )
{
for( size_t x = 0; x < w; x += 2 )
for( int x = 0; x < w; x += 2 )
{
uint8_t r = rgb[4 * i + 1];
uint8_t g = rgb[4 * i + 2];
@ -293,7 +293,7 @@ vpx_image Camera::getLastVPXImage()
}
else
{
for( size_t x = 0; x < w; x += 1 )
for( int x = 0; x < w; x += 1 )
{
uint8_t r = rgb[4 * i + 1];
uint8_t g = rgb[4 * i + 2];

View File

@ -16,6 +16,7 @@
#include "emoticonswidget.h"
#include "smileypack.h"
#include "style.h"
#include <QPushButton>
#include <QRadioButton>
@ -26,11 +27,7 @@
EmoticonsWidget::EmoticonsWidget(QWidget *parent) :
QMenu(parent)
{
QFile f(":/ui/emoticonWidget/emoticonWidget.css");
f.open(QFile::ReadOnly | QFile::Text);
QString pageButtonCss = f.readAll();
setStyleSheet(pageButtonCss);
setStyleSheet(Style::get(":/ui/emoticonWidget/emoticonWidget.css"));
setLayout(&layout);
layout.addWidget(&stack);
@ -64,12 +61,16 @@ EmoticonsWidget::EmoticonsWidget(QWidget *parent) :
page->setLayout(pageLayout);
stack.addWidget(page);
QRadioButton* pageButton = new QRadioButton;
pageButton->setProperty("pageIndex", i);
pageButton->setChecked(i == 0);
buttonLayout->addWidget(pageButton);
// page buttons are only needed if there is more than 1 page
if (pageCount > 1)
{
QRadioButton* pageButton = new QRadioButton;
pageButton->setProperty("pageIndex", i);
pageButton->setChecked(i == 0);
buttonLayout->addWidget(pageButton);
connect(pageButton, &QRadioButton::clicked, this, &EmoticonsWidget::onPageButtonClicked);
connect(pageButton, &QRadioButton::clicked, this, &EmoticonsWidget::onPageButtonClicked);
}
}
buttonLayout->addStretch();

View File

@ -18,6 +18,7 @@
#include "widget.h"
#include "core.h"
#include "math.h"
#include "style.h"
#include <QFileDialog>
#include <QPixmap>
#include <QPainter>
@ -36,10 +37,7 @@ FileTransfertWidget::FileTransfertWidget(ToxFile File)
QFont prettysmall;
prettysmall.setPixelSize(10);
this->setObjectName("default");
QFile f0(":/ui/fileTransferWidget/fileTransferWidget.css");
f0.open(QFile::ReadOnly | QFile::Text);
QTextStream fileTransfertWidgetStylesheet(&f0);
this->setStyleSheet(fileTransfertWidgetStylesheet.readAll());
this->setStyleSheet(Style::get(":/ui/fileTransferWidget/fileTransferWidget.css"));
QPalette greybg;
greybg.setColor(QPalette::Window, QColor(209,209,209));
greybg.setColor(QPalette::Base, QColor(150,150,150));
@ -71,20 +69,9 @@ FileTransfertWidget::FileTransfertWidget(ToxFile File)
buttonWidget->setAutoFillBackground(true);
buttonWidget->setLayout(buttonLayout);
QFile f1(":/ui/stopFileButton/style.css");
f1.open(QFile::ReadOnly | QFile::Text);
QTextStream stopFileButtonStylesheetStream(&f1);
stopFileButtonStylesheet = stopFileButtonStylesheetStream.readAll();
QFile f2(":/ui/pauseFileButton/style.css");
f2.open(QFile::ReadOnly | QFile::Text);
QTextStream pauseFileButtonStylesheetStream(&f2);
pauseFileButtonStylesheet = pauseFileButtonStylesheetStream.readAll();
QFile f3(":/ui/acceptFileButton/style.css");
f3.open(QFile::ReadOnly | QFile::Text);
QTextStream acceptFileButtonStylesheetStream(&f3);
acceptFileButtonStylesheet = acceptFileButtonStylesheetStream.readAll();
stopFileButtonStylesheet = Style::get(":/ui/stopFileButton/style.css");
pauseFileButtonStylesheet = Style::get(":/ui/pauseFileButton/style.css");
acceptFileButtonStylesheet = Style::get(":/ui/acceptFileButton/style.css");
topright->setStyleSheet(stopFileButtonStylesheet);
if (File.direction == ToxFile::SENDING)

View File

@ -57,7 +57,7 @@ AddFriendForm::~AddFriendForm()
main->deleteLater();
}
void AddFriendForm::show(Ui::Widget &ui)
void AddFriendForm::show(Ui::MainWindow &ui)
{
ui.mainContent->layout()->addWidget(main);
ui.mainHead->layout()->addWidget(head);

View File

@ -17,7 +17,7 @@
#ifndef ADDFRIENDFORM_H
#define ADDFRIENDFORM_H
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include <QVBoxLayout>
#include <QLabel>
@ -33,7 +33,7 @@ public:
AddFriendForm();
~AddFriendForm();
void show(Ui::Widget& ui);
void show(Ui::MainWindow &ui);
bool isToxId(const QString& value) const;
void showWarning(const QString& message) const;
QString getMessage() const;

View File

@ -21,6 +21,7 @@
#include "widget/widget.h"
#include "widget/filetransfertwidget.h"
#include "widget/emoticonswidget.h"
#include "style.h"
#include <QFont>
#include <QTime>
#include <QScrollBar>
@ -53,16 +54,8 @@ ChatForm::ChatForm(Friend* chatFriend)
avatar->setPixmap(QPixmap(":/img/contact_dark.png"));
chatAreaWidget->setLayout(mainChatLayout);
QString chatAreaStylesheet = "";
try
{
QFile f(":/ui/chatArea/chatArea.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream chatAreaStylesheetStream(&f);
chatAreaStylesheet = chatAreaStylesheetStream.readAll();
}
catch (int e) {}
chatArea->setStyleSheet(chatAreaStylesheet);
chatAreaWidget->setStyleSheet(Style::get(":/ui/chatArea/chatArea.css"));
chatArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
chatArea->setWidgetResizable(true);
chatArea->setContextMenuPolicy(Qt::CustomContextMenu);
@ -73,76 +66,19 @@ ChatForm::ChatForm(Friend* chatFriend)
footButtonsSmall->setSpacing(2);
QString msgEditStylesheet = "";
try
{
QFile f(":/ui/msgEdit/msgEdit.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream msgEditStylesheetStream(&f);
msgEditStylesheet = msgEditStylesheetStream.readAll();
}
catch (int e) {}
msgEdit->setStyleSheet(msgEditStylesheet);
msgEdit->setStyleSheet(Style::get(":/ui/msgEdit/msgEdit.css"));
msgEdit->setFixedHeight(50);
msgEdit->setFrameStyle(QFrame::NoFrame);
QString sendButtonStylesheet = "";
try
{
QFile f(":/ui/sendButton/sendButton.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream sendButtonStylesheetStream(&f);
sendButtonStylesheet = sendButtonStylesheetStream.readAll();
}
catch (int e) {}
sendButton->setStyleSheet(sendButtonStylesheet);
sendButton->setStyleSheet(Style::get(":/ui/sendButton/sendButton.css"));
fileButton->setStyleSheet(Style::get(":/ui/fileButton/fileButton.css"));
emoteButton->setStyleSheet(Style::get(":/ui/emoteButton/emoteButton.css"));
QString fileButtonStylesheet = "";
try
{
QFile f(":/ui/fileButton/fileButton.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream fileButtonStylesheetStream(&f);
fileButtonStylesheet = fileButtonStylesheetStream.readAll();
}
catch (int e) {}
fileButton->setStyleSheet(fileButtonStylesheet);
QString emoteButtonStylesheet = "";
try
{
QFile f(":/ui/emoteButton/emoteButton.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream emoteButtonStylesheetStream(&f);
emoteButtonStylesheet = emoteButtonStylesheetStream.readAll();
}
catch (int e) {}
emoteButton->setStyleSheet(emoteButtonStylesheet);
QString callButtonStylesheet = "";
try
{
QFile f(":/ui/callButton/callButton.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream callButtonStylesheetStream(&f);
callButtonStylesheet = callButtonStylesheetStream.readAll();
}
catch (int e) {}
callButton->setObjectName("green");
callButton->setStyleSheet(callButtonStylesheet);
callButton->setStyleSheet(Style::get(":/ui/callButton/callButton.css"));
QString videoButtonStylesheet = "";
try
{
QFile f(":/ui/videoButton/videoButton.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream videoButtonStylesheetStream(&f);
videoButtonStylesheet = videoButtonStylesheetStream.readAll();
}
catch (int e) {}
videoButton->setObjectName("green");
videoButton->setStyleSheet(videoButtonStylesheet);
videoButton->setStyleSheet(Style::get(":/ui/videoButton/videoButton.css"));
main->setLayout(mainLayout);
mainLayout->addWidget(chatArea);
@ -184,14 +120,14 @@ ChatForm::ChatForm(Friend* chatFriend)
connect(Widget::getInstance()->getCore(), &Core::fileSendStarted, this, &ChatForm::startFileSend);
connect(Widget::getInstance()->getCore(), &Core::videoFrameReceived, netcam, &NetCamView::updateDisplay);
connect(sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered()));
connect(fileButton, SIGNAL(clicked()), this, SLOT(onAttachClicked()));
connect(callButton, SIGNAL(clicked()), this, SLOT(onCallTriggered()));
connect(videoButton, SIGNAL(clicked()), this, SLOT(onVideoCallTriggered()));
connect(msgEdit, SIGNAL(enterPressed()), this, SLOT(onSendTriggered()));
connect(chatArea->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(onSliderRangeChanged()));
connect(chatArea, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onChatContextMenuRequested(QPoint)));
connect(emoteButton, SIGNAL(clicked()), this, SLOT(onEmoteButtonClicked()));
connect(sendButton, &QPushButton::clicked, this, &ChatForm::onSendTriggered);
connect(fileButton, &QPushButton::clicked, this, &ChatForm::onAttachClicked);
connect(callButton, &QPushButton::clicked, this, &ChatForm::onCallTriggered);
connect(videoButton, &QPushButton::clicked, this, &ChatForm::onVideoCallTriggered);
connect(msgEdit, &ChatTextEdit::enterPressed, this, &ChatForm::onSendTriggered);
connect(chatArea->verticalScrollBar(), &QScrollBar::rangeChanged, this, &ChatForm::onSliderRangeChanged);
connect(chatArea, &QScrollArea::customContextMenuRequested, this, &ChatForm::onChatContextMenuRequested);
connect(emoteButton, &QPushButton::clicked, this, &ChatForm::onEmoteButtonClicked);
}
ChatForm::~ChatForm()
@ -201,7 +137,7 @@ ChatForm::~ChatForm()
delete netcam;
}
void ChatForm::show(Ui::Widget &ui)
void ChatForm::show(Ui::MainWindow &ui)
{
ui.mainContent->layout()->addWidget(main);
ui.mainHead->layout()->addWidget(head);
@ -659,14 +595,18 @@ void ChatForm::onSaveLogClicked()
void ChatForm::onEmoteButtonClicked()
{
// don't show the smiley selection widget if there are no smileys available
if (SmileyPack::getInstance().getEmoticons().empty())
return;
EmoticonsWidget widget;
connect(&widget, &EmoticonsWidget::insertEmoticon, this, &ChatForm::onEmoteInsertRequested);
QWidget* sender = qobject_cast<QWidget*>(QObject::sender());
if (sender)
{
QPoint pos(widget.sizeHint().width() / 2, widget.sizeHint().height());
widget.exec(sender->mapToGlobal(-pos - QPoint(0, 10)));
QPoint pos = -QPoint(widget.sizeHint().width() / 2, widget.sizeHint().height()) - QPoint(0, 10);
widget.exec(sender->mapToGlobal(pos));
}
}

View File

@ -28,7 +28,7 @@
#include <QPoint>
#include "widget/tool/chattextedit.h"
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include "core.h"
#include "widget/netcamview.h"
@ -43,7 +43,7 @@ class ChatForm : public QObject
public:
ChatForm(Friend* chatFriend);
~ChatForm();
void show(Ui::Widget& ui);
void show(Ui::MainWindow &ui);
void setName(QString newName);
void setStatusMessage(QString newMessage);
void addFriendMessage(QString message);

View File

@ -50,7 +50,7 @@ FilesForm::~FilesForm()
// I'm not too bummed about removing it
}
void FilesForm::show(Ui::Widget& ui)
void FilesForm::show(Ui::MainWindow& ui)
{
ui.mainContent->layout()->addWidget(&main);
ui.mainHead->layout()->addWidget(head);

View File

@ -17,7 +17,7 @@
#ifndef FILESFORM_H
#define FILESFORM_H
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include <QListWidget>
#include <QTabWidget>
@ -37,7 +37,7 @@ public:
FilesForm();
~FilesForm();
void show(Ui::Widget& ui);
void show(Ui::MainWindow &ui);
public slots:
void onFileDownloadComplete(const QString& path);

View File

@ -20,6 +20,7 @@
#include "widget/widget.h"
#include "friend.h"
#include "friendlist.h"
#include "style.h"
#include <QFont>
#include <QTime>
#include <QScrollBar>
@ -55,16 +56,8 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
namesList->setFont(small);
chatAreaWidget->setLayout(mainChatLayout);
QString chatAreaStylesheet = "";
try
{
QFile f(":/ui/chatArea/chatArea.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream chatAreaStylesheetStream(&f);
chatAreaStylesheet = chatAreaStylesheetStream.readAll();
}
catch (int e) {}
chatArea->setStyleSheet(chatAreaStylesheet);
chatArea->setStyleSheet(Style::get(":/ui/chatArea/chatArea.css"));
chatArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
chatArea->setWidgetResizable(true);
chatArea->setContextMenuPolicy(Qt::CustomContextMenu);
@ -73,35 +66,15 @@ GroupChatForm::GroupChatForm(Group* chatGroup)
mainChatLayout->setColumnStretch(1,1);
mainChatLayout->setSpacing(10);
QString msgEditStylesheet = "";
try
{
QFile f(":/ui/msgEdit/msgEdit.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream msgEditStylesheetStream(&f);
msgEditStylesheet = msgEditStylesheetStream.readAll();
}
catch (int e) {}
msgEdit->setObjectName("group");
msgEdit->setStyleSheet(msgEditStylesheet);
msgEdit->setStyleSheet(Style::get(":/ui/msgEdit/msgEdit.css"));
msgEdit->setFixedHeight(50);
msgEdit->setFrameStyle(QFrame::NoFrame);
mainChatLayout->setColumnStretch(1,1);
mainChatLayout->setHorizontalSpacing(10);
QString sendButtonStylesheet = "";
try
{
QFile f(":/ui/sendButton/sendButton.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream sendButtonStylesheetStream(&f);
sendButtonStylesheet = sendButtonStylesheetStream.readAll();
}
catch (int e) {}
sendButton->setStyleSheet(sendButtonStylesheet);
sendButton->setStyleSheet(Style::get(":/ui/sendButton/sendButton.css"));
sendButton->setFixedSize(50, 50);
main->setLayout(mainLayout);
@ -142,7 +115,7 @@ GroupChatForm::~GroupChatForm()
delete main;
}
void GroupChatForm::show(Ui::Widget &ui)
void GroupChatForm::show(Ui::MainWindow &ui)
{
ui.mainContent->layout()->addWidget(main);
ui.mainHead->layout()->addWidget(head);

View File

@ -27,7 +27,7 @@
#include <QTime>
#include "widget/tool/chattextedit.h"
#include "ui_widget.h"
#include "ui_mainwindow.h"
// Spacing in px inserted when the author of the last message changes
#define AUTHOR_CHANGE_SPACING 5
@ -40,7 +40,7 @@ class GroupChatForm : public QObject
public:
GroupChatForm(Group* chatGroup);
~GroupChatForm();
void show(Ui::Widget& ui);
void show(Ui::MainWindow &ui);
void setName(QString newName);
void addGroupMessage(QString message, int peerId);
void addMessage(QString author, QString message, QString date=QTime::currentTime().toString("hh:mm"));

View File

@ -93,7 +93,7 @@ void SettingsForm::setFriendAddress(const QString& friendAddress)
id.setText(friendAddress);
}
void SettingsForm::show(Ui::Widget &ui)
void SettingsForm::show(Ui::MainWindow &ui)
{
name.setText(ui.nameLabel->text());
statusText.setText(ui.statusLabel->text());

View File

@ -28,7 +28,7 @@
#include <QTextEdit>
#include <QComboBox>
#include "widget/tool/clickablelabel.h"
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include "widget/selfcamview.h"
class SettingsForm : public QObject
@ -38,7 +38,7 @@ public:
SettingsForm();
~SettingsForm();
void show(Ui::Widget& ui);
void show(Ui::MainWindow &ui);
public slots:
void setFriendAddress(const QString& friendAddress);

View File

@ -25,16 +25,16 @@
FriendWidget::FriendWidget(int FriendId, QString id)
: friendId(FriendId)
{
this->setMouseTracking(true);
this->setAutoFillBackground(true);
this->setFixedWidth(225);
this->setFixedHeight(55);
this->setLayout(&layout);
setMouseTracking(true);
setAutoFillBackground(true);
setFixedHeight(55);
setLayout(&layout);
layout.setSpacing(0);
layout.setMargin(0);
layout.setStretchFactor(this, 100);
textLayout.setSpacing(0);
textLayout.setMargin(0);
setLayoutDirection(Qt::LeftToRight); // parent might have set Qt::RightToLeft
avatar.setPixmap(QPixmap(":img/contact.png"));
name.setText(id);
@ -53,6 +53,9 @@ FriendWidget::FriendWidget(int FriendId, QString id)
pal3.setColor(QPalette::Background, QColor(65,65,65,255));
this->setPalette(pal3);
name.setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
statusMessage.setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
textLayout.addStretch();
textLayout.addWidget(&name);
textLayout.addWidget(&statusMessage);
@ -68,11 +71,13 @@ FriendWidget::FriendWidget(int FriendId, QString id)
layout.addSpacing(5);
isActiveWidget = 0;
}
void FriendWidget::setNewFixedWidth(int newWidth)
{
this->setFixedWidth(newWidth);
layout.invalidate();
layout.update();
layout.activate();
updateGeometry();
qDebug() << "friend" << minimumSizeHint();
}
void FriendWidget::mouseReleaseEvent (QMouseEvent*)

View File

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

View File

@ -24,15 +24,15 @@
GroupWidget::GroupWidget(int GroupId, QString Name)
: groupId{GroupId}
{
this->setMouseTracking(true);
this->setAutoFillBackground(true);
this->setLayout(&layout);
this->setFixedWidth(225);
this->setFixedHeight(55);
setMouseTracking(true);
setAutoFillBackground(true);
setLayout(&layout);
setFixedHeight(55);
layout.setSpacing(0);
layout.setMargin(0);
textLayout.setSpacing(0);
textLayout.setMargin(0);
setLayoutDirection(Qt::LeftToRight); // parent might have set Qt::RightToLeft
avatar.setPixmap(QPixmap(":img/group.png"));
statusPic.setPixmap(QPixmap(":img/status/dot_online.png"));
@ -72,11 +72,6 @@ GroupWidget::GroupWidget(int GroupId, QString Name)
isActiveWidget = 0;
}
void GroupWidget::setNewFixedWidth(int newWidth)
{
this->setFixedWidth(newWidth);
}
void GroupWidget::mouseReleaseEvent (QMouseEvent*)
{
emit groupWidgetClicked(this);

View File

@ -33,7 +33,8 @@ public:
void contextMenuEvent(QContextMenuEvent * event);
void enterEvent(QEvent* event);
void leaveEvent(QEvent* event);
void setAsInactiveChatroom();
void setAsActiveChatroom();
signals:
void groupWidgetClicked(GroupWidget* widget);
@ -44,9 +45,6 @@ public:
QLabel avatar, name, nusers, statusPic;
QHBoxLayout layout;
QVBoxLayout textLayout;
void setAsInactiveChatroom();
void setAsActiveChatroom();
void setNewFixedWidth(int newWidth);
private:
QColor lastColor;

View File

@ -15,7 +15,7 @@
*/
#include "widget.h"
#include "ui_widget.h"
#include "ui_mainwindow.h"
#include "settings.h"
#include "friend.h"
#include "friendlist.h"
@ -25,6 +25,7 @@
#include "group.h"
#include "widget/groupwidget.h"
#include "widget/form/groupchatform.h"
#include "style.h"
#include <QMessageBox>
#include <QDebug>
#include <QSound>
@ -40,61 +41,39 @@
Widget *Widget::instance{nullptr};
Widget::Widget(QWidget *parent) :
QWidget(parent), ui(new Ui::Widget), activeFriendWidget{nullptr}, activeGroupWidget{nullptr}
Widget::Widget(QWidget *parent)
: QMainWindow(parent),
ui(new Ui::MainWindow),
activeFriendWidget{nullptr},
activeGroupWidget{nullptr}
{
ui->setupUi(this);
QSettings settings(Settings::getInstance().getSettingsDirPath() + '/' + "windowSettings.ini", QSettings::IniFormat);
if (!settings.contains("useNativeTheme"))
useNativeTheme = 1;
else
useNativeTheme = settings.value("useNativeTheme").toInt();
ui->statusbar->hide();
ui->menubar->hide();
if (useNativeTheme)
//restore window state
restoreGeometry(Settings::getInstance().getWindowGeometry());
restoreState(Settings::getInstance().getWindowState());
ui->mainSplitter->restoreState(Settings::getInstance().getSplitterState());
if (Settings::getInstance().getUseNativeDecoration())
{
ui->titleBar->hide();
this->layout()->setContentsMargins(0, 0, 0, 0);
QString friendListStylesheet = "";
try
{
QFile f(":ui/friendList/friendList.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream friendListStylesheetStream(&f);
friendListStylesheet = friendListStylesheetStream.readAll();
}
catch (int e) {}
ui->friendList->setObjectName("friendList");
ui->friendList->setStyleSheet(friendListStylesheet);
ui->friendList->setStyleSheet(Style::get(":ui/friendList/friendList.css"));
}
else
{
QString windowStylesheet = "";
try
{
QFile f(":ui/window/window.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream windowStylesheetStream(&f);
windowStylesheet = windowStylesheetStream.readAll();
}
catch (int e) {}
this->setObjectName("activeWindow");
this->setStyleSheet(windowStylesheet);
this->setStyleSheet(Style::get(":ui/window/window.css"));
ui->statusPanel->setStyleSheet(QString(""));
ui->friendList->setStyleSheet(QString(""));
QString friendListStylesheet = "";
try
{
QFile f(":ui/friendList/friendList.css");
f.open(QFile::ReadOnly | QFile::Text);
QTextStream friendListStylesheetStream(&f);
friendListStylesheet = friendListStylesheetStream.readAll();
}
catch (int e) {}
ui->friendList->setObjectName("friendList");
ui->friendList->setStyleSheet(friendListStylesheet);
ui->friendList->setStyleSheet(Style::get(":ui/friendList/friendList.css"));
ui->tbMenu->setIcon(QIcon(":ui/window/applicationIcon.png"));
ui->pbMin->setObjectName("minimizeButton");
@ -119,24 +98,11 @@ Widget::Widget(QWidget *parent) :
resizeDiagSupEsq = false;
resizeDiagSupDer = false;
QSettings settings(Settings::getInstance().getSettingsDirPath() + '/' + "windowSettings.ini", QSettings::IniFormat);
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())
this->setGeometry(geo);
if (settings.value("maximized").toBool())
if (isMaximized())
{
showMaximized();
ui->pbMax->setObjectName("restoreButton");
}
QList<QWidget*> widgets = this->findChildren<QWidget*>();
foreach (QWidget *widget, widgets)
{
widget->setMouseTracking(true);
}
}
isWindowMinimized = 0;
@ -145,24 +111,22 @@ Widget::Widget(QWidget *parent) :
ui->mainHead->setLayout(new QVBoxLayout());
ui->mainHead->layout()->setMargin(0);
ui->mainHead->layout()->setSpacing(0);
QWidget* friendListWidget = new QWidget();
friendListWidget->setLayout(new QVBoxLayout());
friendListWidget->layout()->setSpacing(0);
friendListWidget->layout()->setMargin(0);
friendListWidget->setLayoutDirection(Qt::LeftToRight);
friendListWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
ui->friendList->setWidget(friendListWidget);
ui->friendList->setLayoutDirection(Qt::RightToLeft);
// delay setting username and message until Core inits
//ui->nameLabel->setText(core->getUsername());
ui->nameLabel->label->setStyleSheet("QLabel { color : white; font-size: 11pt; font-weight:bold;}");
//ui->statusLabel->setText(core->getStatusMessage());
ui->statusLabel->label->setStyleSheet("QLabel { color : white; font-size: 8pt;}");
ui->friendList->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QFile f1(":/ui/statusButton/statusButton.css");
f1.open(QFile::ReadOnly | QFile::Text);
QTextStream statusButtonStylesheetStream(&f1);
ui->statusButton->setStyleSheet(statusButtonStylesheetStream.readAll());
ui->statusButton->setStyleSheet(Style::get(":/ui/statusButton/statusButton.css"));
QMenu *statusButtonMenu = new QMenu(ui->statusButton);
QAction* setStatusOnline = statusButtonMenu->addAction(tr("Online","Button to set your status to 'Online'"));
@ -173,13 +137,6 @@ Widget::Widget(QWidget *parent) :
setStatusBusy->setIcon(QIcon(":ui/statusButton/dot_busy.png"));
ui->statusButton->setMenu(statusButtonMenu);
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);
@ -188,11 +145,11 @@ Widget::Widget(QWidget *parent) :
ui->pbClose->setMouseTracking(true);
ui->statusHead->setMouseTracking(true);
ui->friendList->viewport()->installEventFilter(this);
//ui->friendList->viewport()->installEventFilter(this);
QList<int> currentSizes = ui->centralWidget->sizes();
currentSizes[0] = 225;
ui->centralWidget->setSizes(currentSizes);
// disable proportional scaling
ui->mainSplitter->setStretchFactor(0,0);
ui->mainSplitter->setStretchFactor(1,1);
ui->statusButton->setObjectName("offline");
ui->statusButton->style()->polish(ui->statusButton);
@ -241,7 +198,6 @@ Widget::Widget(QWidget *parent) :
connect(this, &Widget::friendRequested, core, &Core::requestFriendship);
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->groupButton, SIGNAL(clicked()), this, SLOT(onGroupClicked()));
connect(ui->transferButton, SIGNAL(clicked()), this, SLOT(onTransferClicked()));
@ -279,10 +235,6 @@ Widget::~Widget()
for (Group* g : GroupList::groupList)
delete g;
GroupList::groupList.clear();
QSettings settings(Settings::getInstance().getSettingsDirPath() + '/' + "windowSettings.ini", QSettings::IniFormat);
settings.setValue("geometry", geometry());
settings.setValue("maximized", isMaximized());
settings.setValue("useNativeTheme", useNativeTheme);
delete ui;
}
@ -293,27 +245,17 @@ Widget* Widget::getInstance()
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();
}
QThread* Widget::getCoreThread()
{
return coreThread;
}
void Widget::updateFriendListWidth()
void Widget::closeEvent(QCloseEvent *event)
{
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);
Settings::getInstance().setWindowGeometry(saveGeometry());
Settings::getInstance().setWindowState(saveState());
Settings::getInstance().setSplitterState(ui->mainSplitter->saveState());
QWidget::closeEvent(event);
}
QString Widget::getUsername()
@ -475,7 +417,6 @@ void Widget::addFriend(int friendId, const QString &userId)
QWidget* widget = ui->friendList->widget();
QLayout* layout = widget->layout();
layout->addWidget(newfriend->widget);
updateFriendListWidth();
connect(newfriend->widget, SIGNAL(friendWidgetClicked(FriendWidget*)), this, SLOT(onFriendWidgetClicked(FriendWidget*)));
connect(newfriend->widget, SIGNAL(removeFriend(int)), this, SLOT(removeFriend(int)));
connect(newfriend->widget, SIGNAL(copyFriendIdToClipboard(int)), this, SLOT(copyFriendIdToClipboard(int)));
@ -682,7 +623,7 @@ void Widget::onGroupMessageReceived(int groupnumber, int friendgroupnumber, cons
newMessageAlert();
g->hasNewMessages = 1;
g->userWasMentioned = 1;
if (useNativeTheme)
if (Settings::getInstance().getUseNativeDecoration())
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_online_notification.png"));
else
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat_notification.png"));
@ -691,7 +632,7 @@ void Widget::onGroupMessageReceived(int groupnumber, int friendgroupnumber, cons
if (g->hasNewMessages == 0)
{
g->hasNewMessages = 1;
if (useNativeTheme)
if (Settings::getInstance().getUseNativeDecoration())
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_online_notification.png"));
else
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat_newmessages.png"));
@ -738,7 +679,7 @@ void Widget::onGroupWidgetClicked(GroupWidget* widget)
{
g->hasNewMessages = 0;
g->userWasMentioned = 0;
if (useNativeTheme)
if (Settings::getInstance().getUseNativeDecoration())
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_online.png"));
else
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat.png"));
@ -777,9 +718,9 @@ Group *Widget::createGroup(int groupId)
QWidget* widget = ui->friendList->widget();
QLayout* layout = widget->layout();
layout->addWidget(newgroup->widget);
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
newgroup->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat.png"));
updateFriendListWidth();
connect(newgroup->widget, SIGNAL(groupWidgetClicked(GroupWidget*)), this, SLOT(onGroupWidgetClicked(GroupWidget*)));
connect(newgroup->widget, SIGNAL(removeGroup(int)), this, SLOT(removeGroup(int)));
connect(newgroup->chatForm, SIGNAL(sendMessage(int,QString)), core, SLOT(sendGroupMessage(int,QString)));
@ -811,12 +752,6 @@ bool Widget::isFriendWidgetCurActiveWidget(Friend* f)
return true;
}
void Widget::resizeEvent(QResizeEvent *)
{
updateFriendListWidth();
}
bool Widget::event(QEvent * e)
{
@ -829,7 +764,7 @@ bool Widget::event(QEvent * e)
}
else if (e->type() == QEvent::WindowActivate)
{
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
{
this->setObjectName("activeWindow");
this->style()->polish(this);
@ -846,18 +781,18 @@ bool Widget::event(QEvent * e)
Group* g = GroupList::findGroup(activeGroupWidget->groupId);
g->hasNewMessages = 0;
g->userWasMentioned = 0;
if (useNativeTheme)
if (Settings::getInstance().getUseNativeDecoration())
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_online.png"));
else
g->widget->statusPic.setPixmap(QPixmap(":img/status/dot_groupchat.png"));
}
}
else if (e->type() == QEvent::WindowDeactivate && !useNativeTheme)
else if (e->type() == QEvent::WindowDeactivate && !Settings::getInstance().getUseNativeDecoration())
{
this->setObjectName("inactiveWindow");
this->style()->polish(this);
}
else if (e->type() == QEvent::MouseMove && !useNativeTheme)
else if (e->type() == QEvent::MouseMove && !Settings::getInstance().getUseNativeDecoration())
{
QMouseEvent *k = (QMouseEvent *)e;
int xMouse = k->pos().x();
@ -902,7 +837,7 @@ bool Widget::event(QEvent * e)
void Widget::mousePressEvent(QMouseEvent *e)
{
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
{
if (e->button() == Qt::LeftButton)
{
@ -936,7 +871,7 @@ void Widget::mousePressEvent(QMouseEvent *e)
void Widget::mouseReleaseEvent(QMouseEvent *e)
{
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
{
moveWidget = false;
allowToResize = false;
@ -951,7 +886,7 @@ void Widget::mouseReleaseEvent(QMouseEvent *e)
void Widget::mouseDoubleClickEvent(QMouseEvent *e)
{
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
{
if (e->pos().x() < ui->tbMenu->geometry().right() and e->pos().y() < ui->tbMenu->geometry().bottom()
and e->pos().x() >= ui->tbMenu->geometry().x() and e->pos().y() >= ui->tbMenu->geometry().y()
@ -975,7 +910,7 @@ void Widget::paintEvent (QPaintEvent *)
void Widget::moveWindow(QMouseEvent *e)
{
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
{
if (e->buttons() & Qt::LeftButton)
{
@ -987,8 +922,7 @@ void Widget::moveWindow(QMouseEvent *e)
void Widget::resizeWindow(QMouseEvent *e)
{
updateFriendListWidth();
if (!useNativeTheme)
if (!Settings::getInstance().getUseNativeDecoration())
{
if (allowToResize)
{
@ -1116,47 +1050,47 @@ void Widget::setTitlebarMode(const TitleMode &flag)
switch (m_titleMode)
{
case CleanTitle:
ui->tbMenu->setHidden(true);
ui->pbMin->setHidden(true);
ui->pbMax->setHidden(true);
ui->pbClose->setHidden(true);
break;
case OnlyCloseButton:
ui->tbMenu->setHidden(true);
ui->pbMin->setHidden(true);
ui->pbMax->setHidden(true);
break;
case MenuOff:
ui->tbMenu->setHidden(true);
break;
case MaxMinOff:
ui->pbMin->setHidden(true);
ui->pbMax->setHidden(true);
break;
case FullScreenMode:
ui->pbMax->setHidden(true);
showMaximized();
break;
case MaximizeModeOff:
ui->pbMax->setHidden(true);
break;
case MinimizeModeOff:
ui->pbMin->setHidden(true);
break;
case FullTitle:
ui->tbMenu->setVisible(true);
ui->pbMin->setVisible(true);
ui->pbMax->setVisible(true);
ui->pbClose->setVisible(true);
break;
break;
default:
ui->tbMenu->setVisible(true);
ui->pbMin->setVisible(true);
ui->pbMax->setVisible(true);
ui->pbClose->setVisible(true);
break;
case CleanTitle:
ui->tbMenu->setHidden(true);
ui->pbMin->setHidden(true);
ui->pbMax->setHidden(true);
ui->pbClose->setHidden(true);
break;
case OnlyCloseButton:
ui->tbMenu->setHidden(true);
ui->pbMin->setHidden(true);
ui->pbMax->setHidden(true);
break;
case MenuOff:
ui->tbMenu->setHidden(true);
break;
case MaxMinOff:
ui->pbMin->setHidden(true);
ui->pbMax->setHidden(true);
break;
case FullScreenMode:
ui->pbMax->setHidden(true);
showMaximized();
break;
case MaximizeModeOff:
ui->pbMax->setHidden(true);
break;
case MinimizeModeOff:
ui->pbMin->setHidden(true);
break;
case FullTitle:
ui->tbMenu->setVisible(true);
ui->pbMin->setVisible(true);
ui->pbMax->setVisible(true);
ui->pbClose->setVisible(true);
break;
break;
default:
ui->tbMenu->setVisible(true);
ui->pbMin->setVisible(true);
ui->pbMax->setVisible(true);
ui->pbClose->setVisible(true);
break;
}
ui->LTitle->setVisible(true);
}

View File

@ -18,7 +18,7 @@
#define WIDGET_H
#include <QThread>
#include <QWidget>
#include <QMainWindow>
#include <QString>
#include <QHBoxLayout>
#include <QMenu>
@ -31,7 +31,7 @@
#define PIXELS_TO_ACT 7
namespace Ui {
class Widget;
class MainWindow;
}
class GroupWidget;
@ -39,7 +39,7 @@ struct FriendWidget;
class Group;
struct Friend;
class Widget : public QWidget
class Widget : public QMainWindow
{
Q_OBJECT
@ -58,9 +58,9 @@ public:
void newMessageAlert();
bool isFriendWidgetCurActiveWidget(Friend* f);
void updateFriendStatusLights(int friendId);
int useNativeTheme;
~Widget();
void updateFriendListWidth();
virtual void closeEvent(QCloseEvent *event);
signals:
void friendRequestAccepted(const QString& userId);
@ -70,9 +70,6 @@ signals:
void usernameChanged(const QString& username);
void statusMessageChanged(const QString& statusMessage);
protected:
void resizeEvent(QResizeEvent *);
private slots:
void maximizeBtnClicked();
void minimizeBtnClicked();
@ -108,7 +105,6 @@ private slots:
void removeFriend(int friendId);
void copyFriendIdToClipboard(int friendId);
void removeGroup(int groupId);
void splitterMoved(int pos, int index);
void setStatusOnline();
void setStatusAway();
void setStatusBusy();
@ -121,7 +117,7 @@ private:
Group* createGroup(int groupId);
private:
Ui::Widget *ui;
Ui::MainWindow *ui;
QSplitter *centralLayout;
QPoint dragPosition;
TitleMode m_titleMode;