fallback availabiluty icons, chatty icon

This commit is contained in:
Blue 2019-06-24 00:09:39 +03:00
parent 833913cac2
commit 12511b1864
18 changed files with 399 additions and 51 deletions

View file

@ -42,7 +42,7 @@ Conversation::Conversation(Models::Contact* p_contact, QWidget* parent):
m_ui->splitter->setStretchFactor(1, 0);
setName(p_contact->getContactName());
setState(p_contact->getAvailability());
updateState();
setStatus(p_contact->getStatus());
connect(contact, SIGNAL(childChanged(Models::Item*, int, int)), this, SLOT(onContactChanged(Models::Item*, int, int)));
@ -106,10 +106,10 @@ void Conversation::setName(const QString& name)
line->setPalName(getJid(), name);
}
void Conversation::setState(Shared::Availability state)
void Conversation::updateState()
{
m_ui->statusIcon->setPixmap(QIcon::fromTheme(Shared::availabilityThemeIcons[state]).pixmap(50));
m_ui->statusIcon->setToolTip(Shared::availabilityNames[state]);
m_ui->statusIcon->setPixmap(contact->getStatusIcon(true).pixmap(40));
m_ui->statusIcon->setToolTip(Shared::availabilityNames[contact->getAvailability()]);
}
void Conversation::setStatus(const QString& status)
@ -135,7 +135,7 @@ void Conversation::onContactChanged(Models::Item* item, int row, int col)
setName(contact->getContactName());
break;
case 3:
setState(contact->getAvailability());
updateState();
break;
case 5:
setStatus(contact->getStatus());

View file

@ -65,7 +65,7 @@ signals:
void shown();
protected:
void setState(Shared::Availability state);
void updateState();
void setStatus(const QString& status);
void setName(const QString& name);
void applyVisualEffects();

View file

@ -69,12 +69,12 @@ void Models::Account::setAvailability(Shared::Availability p_avail)
}
}
QIcon Models::Account::getStatusIcon() const
QIcon Models::Account::getStatusIcon(bool big) const
{
if (state == Shared::connected) {
return QIcon::fromTheme(Shared::availabilityThemeIcons[availability]);
return Shared::availabilityIcon(availability, big);
} else if (state == Shared::disconnected) {
return QIcon::fromTheme(Shared::availabilityThemeIcons[Shared::offline]);
return Shared::availabilityIcon(Shared::offline, big);
} else {
return QIcon::fromTheme(Shared::connectionStateThemeIcons[state]);
}

View file

@ -36,7 +36,7 @@ namespace Models {
void setAvailability(unsigned int p_avail);
Shared::Availability getAvailability() const;
QIcon getStatusIcon() const;
QIcon getStatusIcon(bool big = false) const;
QVariant data(int column) const override;
int columnCount() const override;

View file

@ -216,12 +216,12 @@ void Models::Contact::setState(Shared::SubscriptionState p_state)
}
}
QIcon Models::Contact::getStatusIcon() const
QIcon Models::Contact::getStatusIcon(bool big) const
{
if (getMessagesCount() > 0) {
return QIcon::fromTheme("mail-message");
} else if (state == Shared::both) {
return QIcon::fromTheme(Shared::availabilityThemeIcons[availability]);
return Shared::availabilityIcon(availability, big);;
} else {
return QIcon::fromTheme(Shared::subscriptionStateThemeIcons[state]);
}

View file

@ -22,7 +22,7 @@ public:
QString getJid() const;
Shared::Availability getAvailability() const;
Shared::SubscriptionState getState() const;
QIcon getStatusIcon() const;
QIcon getStatusIcon(bool big = false) const;
int columnCount() const override;
QVariant data(int column) const override;

View file

@ -140,12 +140,12 @@ void Models::Presence::dropMessages()
}
}
QIcon Models::Presence::getStatusIcon() const
QIcon Models::Presence::getStatusIcon(bool big) const
{
if (getMessagesCount() > 0) {
return QIcon::fromTheme("mail-message");
} else {
return QIcon::fromTheme(Shared::availabilityThemeIcons[availability]);
return Shared::availabilityIcon(availability, big);
}
}

View file

@ -46,7 +46,7 @@ public:
QString getStatus() const;
void setStatus(const QString& p_state);
QIcon getStatusIcon() const;
QIcon getStatusIcon(bool big = false) const;
void update(const QString& key, const QVariant& value);
unsigned int getMessagesCount() const;

View file

@ -76,17 +76,17 @@ QVariant Models::Roster::data (const QModelIndex& index, int role) const
switch (item->type) {
case Item::account:{
Account* acc = static_cast<Account*>(item);
result = acc->getStatusIcon();
result = acc->getStatusIcon(false);
}
break;
case Item::contact:{
Contact* contact = static_cast<Contact*>(item);
result = contact->getStatusIcon();
result = contact->getStatusIcon(false);
}
break;
case Item::presence:{
Presence* presence = static_cast<Presence*>(item);
result = presence->getStatusIcon();
result = presence->getStatusIcon(false);
}
break;
default:

View file

@ -16,8 +16,9 @@ Squawk::Squawk(QWidget *parent) :
m_ui->roster->setModel(&rosterModel);
m_ui->roster->setContextMenuPolicy(Qt::CustomContextMenu);
const std::deque<QString>& fallback = palette().window().color().lightnessF() > 0.5 ? Shared::fallbackAvailabilityThemeIconsDarkSmall : Shared::fallbackAvailabilityThemeIconsLightSmall;
for (int i = 0; i < Shared::availabilityNames.size(); ++i) {
m_ui->comboBox->addItem(QIcon::fromTheme(Shared::availabilityThemeIcons[i]), Shared::availabilityNames[i]);
m_ui->comboBox->addItem(QIcon::fromTheme(Shared::availabilityThemeIcons[i], QIcon(fallback[i])), Shared::availabilityNames[i]);
}
m_ui->comboBox->setCurrentIndex(Shared::offline);