SettingsDialog: use the same short display name on Win/Linux than on Mac

Issue #3516
This commit is contained in:
Olivier Goffart 2015-08-05 14:49:16 +02:00
parent cad33de824
commit 646890abb3
4 changed files with 27 additions and 15 deletions

View file

@ -252,5 +252,21 @@ std::unique_ptr<QSettings> AccountState::settings()
return s;
}
QString AccountState::shortDisplayNameForSettings() const
{
QString userWithoutMailHost = account()->credentials()->user();
if (userWithoutMailHost.contains('@')) {
userWithoutMailHost = userWithoutMailHost.left(userWithoutMailHost.lastIndexOf('@'));
}
QString hostWithoutTld = account()->url().host();
if (hostWithoutTld.contains('.')) {
hostWithoutTld = hostWithoutTld.left(hostWithoutTld.lastIndexOf('.'));
hostWithoutTld = hostWithoutTld.replace(QLatin1String("www."), QLatin1String(""));
}
return userWithoutMailHost + QLatin1String("\n") + hostWithoutTld;
}
} // namespace OCC

View file

@ -89,6 +89,9 @@ public:
/** Returns a new settings object for this account, already in the right groups. */
std::unique_ptr<QSettings> settings();
/** display name with two lines that is displayed in the settings */
QString shortDisplayNameForSettings() const;
private:
void setState(State state);

View file

@ -76,20 +76,22 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) :
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
toolBar->addWidget(spacer);
// Note: all the actions have a '\n' because the account name is in two lines and
// all buttons must have the same size in order to keep a good layout
QIcon protocolIcon(QLatin1String(":/client/resources/activity.png"));
_protocolAction = toolBar->addAction(protocolIcon, tr("Activity"));
_protocolAction = toolBar->addAction(protocolIcon, tr("Activity") + QLatin1Char('\n'));
_protocolAction->setCheckable(true);
ProtocolWidget *protocolWidget = new ProtocolWidget;
_ui->stack->addWidget(protocolWidget);
QIcon generalIcon(QLatin1String(":/client/resources/settings.png"));
QAction *generalAction = toolBar->addAction(generalIcon, tr("General"));
QAction *generalAction = toolBar->addAction(generalIcon, tr("General") + QLatin1Char('\n'));
generalAction->setCheckable(true);
GeneralSettings *generalSettings = new GeneralSettings;
_ui->stack->addWidget(generalSettings);
QIcon networkIcon(QLatin1String(":/client/resources/network.png"));
QAction *networkAction = toolBar->addAction(networkIcon, tr("Network"));
QAction *networkAction = toolBar->addAction(networkIcon, tr("Network") + QLatin1Char('\n'));
networkAction->setCheckable(true);
NetworkSettings *networkSettings = new NetworkSettings;
_ui->stack->addWidget(networkSettings);
@ -163,7 +165,8 @@ void SettingsDialog::accountAdded(AccountState *s)
QIcon accountIcon(QLatin1String(":/client/resources/account.png"));
auto toolBar = qobject_cast<QToolBar*>(layout()->menuBar());
Q_ASSERT(toolBar);
auto accountAction = new QAction(accountIcon, s->account()->displayName(), this);
auto accountAction = new QAction(accountIcon, s->shortDisplayNameForSettings(), this);
accountAction->setToolTip(s->account()->displayName());
toolBar->insertAction(toolBar->actions().at(0), accountAction);
accountAction->setCheckable(true);
auto accountSettings = new AccountSettings(s, this);

View file

@ -114,17 +114,7 @@ void SettingsDialogMac::accountAdded(AccountState *s)
QIcon accountIcon = MacStandardIcon::icon(MacStandardIcon::UserAccounts);
auto accountSettings = new AccountSettings(s, this);
QString userWithoutMailHost = s->account()->credentials()->user();
if (userWithoutMailHost.contains('@')) {
userWithoutMailHost = userWithoutMailHost.left(userWithoutMailHost.lastIndexOf('@'));
}
QString hostWithoutTld = s->account()->url().host();
if (hostWithoutTld.contains('.')) {
hostWithoutTld = hostWithoutTld.left(hostWithoutTld.lastIndexOf('.'));
hostWithoutTld = hostWithoutTld.replace(QLatin1String("www."), QLatin1String(""));
}
QString displayName = tr("%1\n%2").arg(userWithoutMailHost, hostWithoutTld);
QString displayName = s->shortDisplayNameForSettings();
insertPreferencesPanel(0, accountIcon, displayName, accountSettings);