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

Merge branch 'pr422'

This commit is contained in:
Tux3 / Mlkj / !Lev.uXFMLA 2014-10-16 18:04:00 +02:00
commit a0600d1ce4
No known key found for this signature in database
GPG Key ID: 7E086DD661263264
11 changed files with 64 additions and 4 deletions

View File

@ -138,6 +138,7 @@ void Settings::load()
minimizeOnClose = s.value("minimizeOnClose", false).toBool();
useNativeStyle = s.value("nativeStyle", false).toBool();
style = s.value("style", "None").toString();
statusChangeNotificationEnabled = s.value("statusChangeNotificationEnabled", false).toBool();
s.endGroup();
s.beginGroup("State");
@ -245,6 +246,7 @@ void Settings::save(QString path)
s.setValue("minimizeOnClose", minimizeOnClose);
s.setValue("nativeStyle", useNativeStyle);
s.setValue("style",style);
s.setValue("statusChangeNotificationEnabled", statusChangeNotificationEnabled);
s.endGroup();
s.beginGroup("State");
@ -377,6 +379,16 @@ void Settings::setAutostartInTray(bool newValue)
autostartInTray = newValue;
}
bool Settings::getStatusChangeNotificationEnabled() const
{
return statusChangeNotificationEnabled;
}
void Settings::setStatusChangeNotificationEnabled(bool newValue)
{
statusChangeNotificationEnabled = newValue;
}
bool Settings::getUseTranslations() const
{
return useTranslations;

View File

@ -138,10 +138,14 @@ public:
bool isMinimizeOnCloseEnabled() const;
void setMinimizeOnClose(bool newValue);
bool getStatusChangeNotificationEnabled() const;
void setStatusChangeNotificationEnabled(bool newValue);
// Privacy
bool isTypingNotificationEnabled() const;
void setTypingNotification(bool enabled);
// State
bool getUseNativeStyle() const;
void setUseNativeStyle(bool value);
@ -211,6 +215,7 @@ private:
int firstColumnHandlePos;
int secondColumnHandlePosFromRight;
QString timestampFormat;
bool statusChangeNotificationEnabled;
// Privacy
bool typingNotification;

View File

@ -118,6 +118,11 @@ void ChatAreaWidget::insertMessage(ChatAction *msgAction)
messages.append(msgAction);
}
int ChatAreaWidget::getNumberOfMessages()
{
return messages.size();
}
void ChatAreaWidget::onSliderRangeChanged()
{
QScrollBar* scroll = verticalScrollBar();

View File

@ -33,6 +33,7 @@ public:
int nameColWidth() {return nameWidth;}
void setNameColWidth(int w);
int getNumberOfMessages();
signals:
void onFileTranfertInterract(QString widgetName, QString buttonName);

View File

@ -127,6 +127,11 @@ GenericChatForm::GenericChatForm(QWidget *parent) :
connect(chatWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onChatContextMenuRequested(QPoint)));
}
int GenericChatForm::getNumberOfMessages()
{
return chatWidget->getNumberOfMessages();
}
void GenericChatForm::setName(const QString &newName)
{
nameLabel->setText(newName);

View File

@ -46,7 +46,8 @@ public:
virtual void show(Ui::MainWindow &ui);
void addMessage(QString author, QString message, bool isAction = false, QDateTime datetime=QDateTime::currentDateTime());
void addSystemInfoMessage(const QString &message, const QString &type, const QDateTime &datetime=QDateTime::currentDateTime());
int getNumberOfMessages();
signals:
void sendMessage(int, QString);
void sendAction(int, QString);

View File

@ -33,6 +33,7 @@ GeneralForm::GeneralForm() :
bodyUI->cbUseTranslations->setChecked(Settings::getInstance().getUseTranslations());
bodyUI->cbMakeToxPortable->setChecked(Settings::getInstance().getMakeToxPortable());
bodyUI->startInTray->setChecked(Settings::getInstance().getAutostartInTray());
bodyUI->statusChangesCheckbox->setChecked(Settings::getInstance().getStatusChangeNotificationEnabled());
for (auto entry : SmileyPack::listSmileyPacks())
{
@ -40,7 +41,7 @@ GeneralForm::GeneralForm() :
}
bodyUI->smileyPackBrowser->setCurrentIndex(bodyUI->smileyPackBrowser->findData(Settings::getInstance().getSmileyPack()));
reloadSmiles();
bodyUI->styleBrowser->addItems(QStyleFactory::keys());
bodyUI->styleBrowser->addItem("None");
if(QStyleFactory::keys().contains(Settings::getInstance().getStyle()))
@ -61,6 +62,7 @@ GeneralForm::GeneralForm() :
connect(bodyUI->cbUseTranslations, &QCheckBox::stateChanged, this, &GeneralForm::onUseTranslationUpdated);
connect(bodyUI->cbMakeToxPortable, &QCheckBox::stateChanged, this, &GeneralForm::onMakeToxPortableUpdated);
connect(bodyUI->startInTray, &QCheckBox::stateChanged, this, &GeneralForm::onSetAutostartInTray);
connect(bodyUI->statusChangesCheckbox, &QCheckBox::stateChanged, this, &GeneralForm::onSetStatusChange);
connect(bodyUI->smileyPackBrowser, SIGNAL(currentIndexChanged(int)), this, SLOT(onSmileyBrowserIndexChanged(int)));
// new syntax can't handle overloaded signals... (at least not in a pretty way)
connect(bodyUI->cbUDPDisabled, &QCheckBox::stateChanged, this, &GeneralForm::onUDPUpdated);
@ -101,6 +103,11 @@ void GeneralForm::onStyleSelected(QString style)
this->setStyle(QStyleFactory::create(style));
}
void GeneralForm::onSetStatusChange()
{
Settings::getInstance().setStatusChangeNotificationEnabled(bodyUI->statusChangesCheckbox->isChecked());
}
void GeneralForm::onSmileyBrowserIndexChanged(int index)
{
QString filename = bodyUI->smileyPackBrowser->itemData(index).toString();

View File

@ -43,6 +43,7 @@ private slots:
void onProxyPortEdited(int port);
void onUseProxyUpdated();
void onStyleSelected(QString style);
void onSetStatusChange();
private:
Ui::GeneralSettings *bodyUI;

View File

@ -53,6 +53,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="statusChangesCheckbox">
<property name="text">
<string>Show contacts' status changes</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View File

@ -151,7 +151,6 @@ Widget::Widget(QWidget *parent)
connect(core, SIGNAL(fileUploadFinished(const QString&)), &filesForm, SLOT(onFileUploadComplete(const QString&)));
connect(core, &Core::friendAdded, this, &Widget::addFriend);
connect(core, &Core::failedToAddFriend, this, &Widget::addFriendFailed);
connect(core, &Core::friendStatusChanged, this, &Widget::onFriendStatusChanged);
connect(core, &Core::friendUsernameChanged, this, &Widget::onFriendUsernameChanged);
connect(core, &Core::friendStatusChanged, this, &Widget::onFriendStatusChanged);
connect(core, &Core::friendStatusMessageChanged, this, &Widget::onFriendStatusMessageChanged);
@ -538,6 +537,23 @@ void Widget::onFriendStatusChanged(int friendId, Status status)
f->friendStatus = status;
f->widget->updateStatusLight();
QString fStatus = "";
switch(f->friendStatus){
case Status::Away:
fStatus = tr("away", "contact status"); break;
case Status::Busy:
fStatus = tr("busy", "contact status"); break;
case Status::Offline:
fStatus = tr("offline", "contact status"); break;
default:
fStatus = tr("online", "contact status"); break;
}
//won't print the message if there were no messages before
if(f->chatForm->getNumberOfMessages() != 0
&& Settings::getInstance().getStatusChangeNotificationEnabled() == true)
f->chatForm->addSystemInfoMessage(tr("%1 is now %2", "e.g. \"Dubslow is now online\"").arg(f->getName()).arg(fStatus), "white");
}
void Widget::onFriendStatusMessageChanged(int friendId, const QString& message)

View File

@ -90,7 +90,7 @@ private slots:
void setStatusMessage(const QString &statusMessage);
void addFriend(int friendId, const QString& userId);
void addFriendFailed(const QString& userId);
void onFriendStatusChanged(int friendId, Status status);
void onFriendStatusChanged(int friendId, Status status);
void onFriendStatusMessageChanged(int friendId, const QString& message);
void onFriendUsernameChanged(int friendId, const QString& username);
void onChatroomWidgetClicked(GenericChatroomWidget *);