mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-07 06:36:55 +02:00
Reimplemented toggle all accounts functionality in the Accounts widget.
Also many layout fixes in the accounts widget. This replaces the old Go Online/Go Offline feature, but behaves a bit differently. Specifically, it does not disconnect all resolvers or peers.
This commit is contained in:
BIN
data/images/account-offline.png
Normal file
BIN
data/images/account-offline.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
BIN
data/images/account-online.png
Normal file
BIN
data/images/account-online.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
@@ -158,5 +158,7 @@
|
|||||||
<file>data/images/soundcloud.png</file>
|
<file>data/images/soundcloud.png</file>
|
||||||
<file>data/images/resolver-default.png</file>
|
<file>data/images/resolver-default.png</file>
|
||||||
<file>data/images/spotify-sourceicon.png</file>
|
<file>data/images/spotify-sourceicon.png</file>
|
||||||
|
<file>data/images/account-offline.png</file>
|
||||||
|
<file>data/images/account-online.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@@ -137,7 +137,6 @@ TomahawkWindow::TomahawkWindow( QWidget* parent )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set initial state
|
// set initial state
|
||||||
onAccountDisconnected();
|
|
||||||
audioStopped();
|
audioStopped();
|
||||||
|
|
||||||
vm->setQueue( m_queueView );
|
vm->setQueue( m_queueView );
|
||||||
@@ -1157,20 +1156,6 @@ TomahawkWindow::onPlaybackLoading( const Tomahawk::result_ptr& result )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
TomahawkWindow::onAccountConnected()
|
|
||||||
{
|
|
||||||
ActionCollection::instance()->getAction( "toggleOnline" )->setText( tr( "Go &Offline" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
TomahawkWindow::onAccountDisconnected()
|
|
||||||
{
|
|
||||||
ActionCollection::instance()->getAction( "toggleOnline" )->setText( tr( "Go &Online" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TomahawkWindow::onAccountError()
|
TomahawkWindow::onAccountError()
|
||||||
{
|
{
|
||||||
|
@@ -107,8 +107,6 @@ public slots:
|
|||||||
void fullScreenExited();
|
void fullScreenExited();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onAccountConnected();
|
|
||||||
void onAccountDisconnected();
|
|
||||||
void onAccountError();
|
void onAccountError();
|
||||||
|
|
||||||
void onHistoryBackAvailable( bool avail );
|
void onHistoryBackAvailable( bool avail );
|
||||||
|
@@ -70,8 +70,6 @@ ActionCollection::initActions()
|
|||||||
m_actionCollection[ "togglePrivacy" ] = privacyToggle;
|
m_actionCollection[ "togglePrivacy" ] = privacyToggle;
|
||||||
connect( m_actionCollection[ "togglePrivacy" ], SIGNAL( triggered() ), SLOT( togglePrivateListeningMode() ), Qt::UniqueConnection );
|
connect( m_actionCollection[ "togglePrivacy" ], SIGNAL( triggered() ), SLOT( togglePrivateListeningMode() ), Qt::UniqueConnection );
|
||||||
|
|
||||||
m_actionCollection[ "toggleOnline" ] = new QAction( tr( "Go &Online" ), this );
|
|
||||||
|
|
||||||
m_actionCollection[ "loadPlaylist" ] = new QAction( tr( "&Load Playlist" ), this );
|
m_actionCollection[ "loadPlaylist" ] = new QAction( tr( "&Load Playlist" ), this );
|
||||||
m_actionCollection[ "renamePlaylist" ] = new QAction( tr( "&Rename Playlist" ), this );
|
m_actionCollection[ "renamePlaylist" ] = new QAction( tr( "&Rename Playlist" ), this );
|
||||||
m_actionCollection[ "copyPlaylist" ] = new QAction( tr( "&Copy Playlist Link" ), this );
|
m_actionCollection[ "copyPlaylist" ] = new QAction( tr( "&Copy Playlist Link" ), this );
|
||||||
|
@@ -23,13 +23,18 @@
|
|||||||
#include "utils/TomahawkUtilsGui.h"
|
#include "utils/TomahawkUtilsGui.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
AccountListWidget::AccountListWidget( AccountModelFactoryProxy* model, QWidget* parent )
|
AccountListWidget::AccountListWidget( AccountModelFactoryProxy* model, QWidget* parent )
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
, m_model( model )
|
, m_model( model )
|
||||||
{
|
{
|
||||||
m_layout = new QVBoxLayout( this );
|
QVBoxLayout* mainLayout = new QVBoxLayout( this );
|
||||||
|
TomahawkUtils::unmarginLayout( mainLayout );
|
||||||
|
m_layout = new QVBoxLayout;
|
||||||
TomahawkUtils::unmarginLayout( m_layout );
|
TomahawkUtils::unmarginLayout( m_layout );
|
||||||
|
mainLayout->addLayout( m_layout );
|
||||||
|
mainLayout->setSpacing( 8 );
|
||||||
|
|
||||||
connect( m_model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ),
|
connect( m_model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ),
|
||||||
this, SLOT( updateEntries( QModelIndex, QModelIndex ) ) );
|
this, SLOT( updateEntries( QModelIndex, QModelIndex ) ) );
|
||||||
@@ -39,6 +44,36 @@ AccountListWidget::AccountListWidget( AccountModelFactoryProxy* model, QWidget*
|
|||||||
this, SLOT( removeEntries( QModelIndex, int, int ) ) );
|
this, SLOT( removeEntries( QModelIndex, int, int ) ) );
|
||||||
connect( m_model, SIGNAL( modelReset() ),
|
connect( m_model, SIGNAL( modelReset() ),
|
||||||
this, SLOT( loadAllEntries() ) );
|
this, SLOT( loadAllEntries() ) );
|
||||||
|
|
||||||
|
connect( m_model, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ),
|
||||||
|
this, SLOT( updateToggleOnlineStateButton() ) );
|
||||||
|
|
||||||
|
QWidget* separatorLine = new QWidget( this );
|
||||||
|
separatorLine->setFixedHeight( 1 );
|
||||||
|
separatorLine->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
separatorLine->setStyleSheet( "QWidget { border-top: 1px solid black; }" );
|
||||||
|
mainLayout->insertWidget( 0, separatorLine );
|
||||||
|
mainLayout->addSpacing( 6 );
|
||||||
|
|
||||||
|
QLabel *connectionsLabel = new QLabel( tr( "Connections" ), this );
|
||||||
|
QFont clFont = connectionsLabel->font();
|
||||||
|
clFont.setBold( true );
|
||||||
|
clFont.setPointSize( TomahawkUtils::defaultFontSize() + 3 );
|
||||||
|
connectionsLabel->setFont( clFont );
|
||||||
|
connectionsLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
||||||
|
|
||||||
|
m_toggleOnlineButton = new QPushButton( tr( "Connect &All" ), this );
|
||||||
|
m_toggleOnlineButtonState = false;
|
||||||
|
connect( m_toggleOnlineButton, SIGNAL( clicked() ),
|
||||||
|
this, SLOT( toggleOnlineStateForAll() ) );
|
||||||
|
|
||||||
|
QHBoxLayout *headerLayout = new QHBoxLayout( this );
|
||||||
|
headerLayout->addWidget( connectionsLabel );
|
||||||
|
headerLayout->addSpacing( 30 );
|
||||||
|
headerLayout->addWidget( m_toggleOnlineButton );
|
||||||
|
mainLayout->insertLayout( 0, headerLayout );
|
||||||
|
|
||||||
|
updateToggleOnlineStateButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -147,3 +182,41 @@ AccountListWidget::removeEntries( const QModelIndex& parent, int start, int end
|
|||||||
adjustSize();
|
adjustSize();
|
||||||
qobject_cast< QWidget* >( QWidget::parent() )->adjustSize();
|
qobject_cast< QWidget* >( QWidget::parent() )->adjustSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AccountListWidget::toggleOnlineStateForAll()
|
||||||
|
{
|
||||||
|
bool newState = !m_toggleOnlineButtonState;
|
||||||
|
foreach ( QList< AccountWidget* > awgts, m_entries )
|
||||||
|
{
|
||||||
|
foreach ( AccountWidget* awgt, awgts )
|
||||||
|
{
|
||||||
|
awgt->setConnectionState( newState );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AccountListWidget::updateToggleOnlineStateButton()
|
||||||
|
{
|
||||||
|
bool newState = false;
|
||||||
|
foreach ( QList< AccountWidget* > awgts, m_entries )
|
||||||
|
{
|
||||||
|
foreach ( AccountWidget* awgt, awgts )
|
||||||
|
{
|
||||||
|
if ( awgt->connectionState() )
|
||||||
|
{
|
||||||
|
newState = true;
|
||||||
|
goto end; //break 2 levels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end:;
|
||||||
|
|
||||||
|
m_toggleOnlineButtonState = newState;
|
||||||
|
|
||||||
|
m_toggleOnlineButton->setText( m_toggleOnlineButtonState ? tr( "Disconnect &All" )
|
||||||
|
: tr( "Connect &All" ) );
|
||||||
|
m_toggleOnlineButton->setIcon( m_toggleOnlineButtonState ? QIcon( RESPATH "images/account-offline.png" )
|
||||||
|
: QIcon( RESPATH "images/account-online.png" ) );
|
||||||
|
}
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
class AccountWidget;
|
class AccountWidget;
|
||||||
|
class QPushButton;
|
||||||
|
|
||||||
class AccountListWidget : public QWidget
|
class AccountListWidget : public QWidget
|
||||||
{
|
{
|
||||||
@@ -38,11 +39,15 @@ private slots:
|
|||||||
void loadAllEntries();
|
void loadAllEntries();
|
||||||
void insertEntries( const QModelIndex& parent, int start, int end );
|
void insertEntries( const QModelIndex& parent, int start, int end );
|
||||||
void removeEntries( const QModelIndex& parent, int start, int end );
|
void removeEntries( const QModelIndex& parent, int start, int end );
|
||||||
|
void toggleOnlineStateForAll();
|
||||||
|
void updateToggleOnlineStateButton();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHash< QPersistentModelIndex, QList< AccountWidget* > > m_entries;
|
QHash< QPersistentModelIndex, QList< AccountWidget* > > m_entries;
|
||||||
AccountModelFactoryProxy* m_model;
|
AccountModelFactoryProxy* m_model;
|
||||||
QVBoxLayout* m_layout;
|
QVBoxLayout* m_layout;
|
||||||
|
QPushButton* m_toggleOnlineButton;
|
||||||
|
bool m_toggleOnlineButtonState;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ACCOUNTLISTWIDGET_H
|
#endif // ACCOUNTLISTWIDGET_H
|
||||||
|
@@ -44,15 +44,14 @@ AccountWidget::AccountWidget( QWidget* parent )
|
|||||||
QHBoxLayout *mainLayout = new QHBoxLayout( this );
|
QHBoxLayout *mainLayout = new QHBoxLayout( this );
|
||||||
TomahawkUtils::unmarginLayout( mainLayout );
|
TomahawkUtils::unmarginLayout( mainLayout );
|
||||||
setLayout( mainLayout );
|
setLayout( mainLayout );
|
||||||
setContentsMargins( 8, 8, 8, 8 );
|
setContentsMargins( 0, 8, 0, 8 );
|
||||||
|
|
||||||
m_imageLabel = new QLabel( this );
|
m_imageLabel = new QLabel( this );
|
||||||
mainLayout->addWidget( m_imageLabel );
|
mainLayout->addWidget( m_imageLabel );
|
||||||
mainLayout->setSpacing( 4 );
|
mainLayout->setSpacing( 4 );
|
||||||
|
|
||||||
QGridLayout* vLayout = new QGridLayout( this );
|
QGridLayout* vLayout = new QGridLayout( this );
|
||||||
vLayout->setMargin( 3 );
|
vLayout->setSpacing( 8 );
|
||||||
vLayout->setSpacing( 3 );
|
|
||||||
mainLayout->addLayout( vLayout );
|
mainLayout->addLayout( vLayout );
|
||||||
|
|
||||||
QFrame* idContainer = new QFrame( this );
|
QFrame* idContainer = new QFrame( this );
|
||||||
@@ -95,12 +94,11 @@ AccountWidget::AccountWidget( QWidget* parent )
|
|||||||
vLayout->addLayout( statusToggleLayout, 0, 1, 1, 1 );
|
vLayout->addLayout( statusToggleLayout, 0, 1, 1, 1 );
|
||||||
statusToggleLayout->addStretch();
|
statusToggleLayout->addStretch();
|
||||||
statusToggleLayout->addWidget( m_statusToggle );
|
statusToggleLayout->addWidget( m_statusToggle );
|
||||||
//vLayout->addWidget( m_statusToggle, 0, 1 );
|
|
||||||
|
|
||||||
m_inviteContainer = new UnstyledFrame( this );
|
m_inviteContainer = new UnstyledFrame( this );
|
||||||
vLayout->addWidget( m_inviteContainer, 1, 0 );
|
vLayout->addWidget( m_inviteContainer, 1, 0 );
|
||||||
m_inviteContainer->setFrameColor( QColor( 0x8c, 0x8c, 0x8c ) ); //from ProxyStyle
|
m_inviteContainer->setFrameColor( QColor( 0x8c, 0x8c, 0x8c ) ); //from ProxyStyle
|
||||||
m_inviteContainer->setFixedWidth( m_inviteContainer->logicalDpiX() * 2 );
|
m_inviteContainer->setMinimumWidth( m_inviteContainer->logicalDpiX() * 2 );
|
||||||
m_inviteContainer->setContentsMargins( 1, 1, 1, 2 );
|
m_inviteContainer->setContentsMargins( 1, 1, 1, 2 );
|
||||||
m_inviteContainer->setAttribute( Qt::WA_TranslucentBackground, false );
|
m_inviteContainer->setAttribute( Qt::WA_TranslucentBackground, false );
|
||||||
m_inviteContainer->setStyleSheet( "background: white" );
|
m_inviteContainer->setStyleSheet( "background: white" );
|
||||||
@@ -121,12 +119,13 @@ AccountWidget::AccountWidget( QWidget* parent )
|
|||||||
m_inviteEdit->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
|
m_inviteEdit->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
|
||||||
containerLayout->addWidget( m_inviteEdit );
|
containerLayout->addWidget( m_inviteEdit );
|
||||||
m_inviteEdit->setFrame( false );
|
m_inviteEdit->setFrame( false );
|
||||||
idContainer->setFixedWidth( m_inviteContainer->width() );
|
|
||||||
|
|
||||||
m_inviteButton = new QPushButton( this );
|
m_inviteButton = new QPushButton( this );
|
||||||
m_inviteButton->setMinimumWidth( m_inviteButton->logicalDpiX() * 0.8 );
|
m_inviteButton->setMinimumWidth( m_inviteButton->logicalDpiX() * 0.8 );
|
||||||
m_inviteButton->setText( tr( "Invite" ) );
|
m_inviteButton->setText( tr( "Invite" ) );
|
||||||
|
m_inviteButton->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Preferred );
|
||||||
vLayout->addWidget( m_inviteButton, 1, 1 );
|
vLayout->addWidget( m_inviteButton, 1, 1 );
|
||||||
|
vLayout->setColumnStretch( 0, 1 );
|
||||||
|
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
@@ -211,6 +210,21 @@ AccountWidget::update( const QPersistentModelIndex& idx, int accountIdx )
|
|||||||
m_statusToggle->setBackChecked( true );
|
m_statusToggle->setBackChecked( true );
|
||||||
setInviteWidgetsEnabled( false );
|
setInviteWidgetsEnabled( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !account->enabled() && account->connectionState() == Tomahawk::Accounts::Account::Disconnected )
|
||||||
|
{
|
||||||
|
m_spinner->fadeOut();
|
||||||
|
m_statusToggle->setBackChecked( false );
|
||||||
|
m_statusToggle->setChecked( false );
|
||||||
|
setInviteWidgetsEnabled( false );
|
||||||
|
}
|
||||||
|
else if ( account->enabled() && account->connectionState() == Tomahawk::Accounts::Account::Connected )
|
||||||
|
{
|
||||||
|
m_spinner->fadeOut();
|
||||||
|
m_statusToggle->setBackChecked( true );
|
||||||
|
m_statusToggle->setChecked( true );
|
||||||
|
setInviteWidgetsEnabled( true );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,3 +296,14 @@ AccountWidget::setupConnections( const QPersistentModelIndex& idx, int accountId
|
|||||||
m_inviteEdit->setPlaceholderText( account->sipPlugin()->inviteString() );
|
m_inviteEdit->setPlaceholderText( account->sipPlugin()->inviteString() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AccountWidget::setConnectionState( bool state )
|
||||||
|
{
|
||||||
|
m_statusToggle->setChecked( state );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AccountWidget::connectionState() const
|
||||||
|
{
|
||||||
|
return m_statusToggle->isChecked() || m_statusToggle->backChecked();
|
||||||
|
}
|
||||||
|
@@ -42,6 +42,9 @@ public:
|
|||||||
void update( const QPersistentModelIndex& idx, int accountIdx );
|
void update( const QPersistentModelIndex& idx, int accountIdx );
|
||||||
void setupConnections( const QPersistentModelIndex& idx, int accountIdx );
|
void setupConnections( const QPersistentModelIndex& idx, int accountIdx );
|
||||||
|
|
||||||
|
void setConnectionState( bool state );
|
||||||
|
bool connectionState() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void changeAccountConnectionState( bool connected );
|
void changeAccountConnectionState( bool connected );
|
||||||
void sendInvite();
|
void sendInvite();
|
||||||
|
@@ -19,8 +19,8 @@
|
|||||||
#include "AccountsToolButton.h"
|
#include "AccountsToolButton.h"
|
||||||
|
|
||||||
#include "AccountListWidget.h"
|
#include "AccountListWidget.h"
|
||||||
|
#include "accounts/AccountManager.h"
|
||||||
#include "utils/TomahawkUtilsGui.h"
|
#include "utils/TomahawkUtilsGui.h"
|
||||||
#include "ActionCollection.h"
|
|
||||||
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QListView>
|
#include <QListView>
|
||||||
@@ -48,36 +48,6 @@ AccountsToolButton::AccountsToolButton( QWidget* parent )
|
|||||||
w->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum );
|
w->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum );
|
||||||
QVBoxLayout *wMainLayout = new QVBoxLayout( w );
|
QVBoxLayout *wMainLayout = new QVBoxLayout( w );
|
||||||
w->setLayout( wMainLayout );
|
w->setLayout( wMainLayout );
|
||||||
QLabel *connectionsLabel = new QLabel( tr( "Connections" ), w );
|
|
||||||
|
|
||||||
QToolButton *toggleOnlineButton = new QToolButton( w );
|
|
||||||
toggleOnlineButton->setIcon( QIcon( RESPATH "images/view-toggle-icon-cloud-active.png" ) ); //TODO: real icon
|
|
||||||
toggleOnlineButton->setText( tr( "Toggle Online" ) );
|
|
||||||
toggleOnlineButton->setDefaultAction( ActionCollection::instance()->getAction( "toggleOnline" ) );
|
|
||||||
|
|
||||||
QFont clFont = connectionsLabel->font();
|
|
||||||
clFont.setBold( true );
|
|
||||||
clFont.setPointSize( TomahawkUtils::defaultFontSize() + 3 );
|
|
||||||
connectionsLabel->setFont( clFont );
|
|
||||||
connectionsLabel->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
|
||||||
|
|
||||||
QPushButton *settingsButton = new QPushButton( w );
|
|
||||||
settingsButton->setIcon( QIcon( RESPATH "images/account-settings.png" ) );
|
|
||||||
settingsButton->setText( tr( "Configure Accounts" ) );
|
|
||||||
connect( settingsButton, SIGNAL( clicked() ),
|
|
||||||
window(), SLOT( showSettingsDialog() ) );
|
|
||||||
|
|
||||||
QHBoxLayout *headerLayout = new QHBoxLayout( w );
|
|
||||||
headerLayout->addWidget( connectionsLabel );
|
|
||||||
headerLayout->addWidget( toggleOnlineButton );
|
|
||||||
headerLayout->addSpacing( 30 );
|
|
||||||
headerLayout->addWidget( settingsButton );
|
|
||||||
wMainLayout->addLayout( headerLayout );
|
|
||||||
QWidget *separatorLine = new QWidget( w );
|
|
||||||
separatorLine->setFixedHeight( 1 );
|
|
||||||
separatorLine->setContentsMargins( 0, 0, 0, 0 );
|
|
||||||
separatorLine->setStyleSheet( "QWidget { border-top: 1px solid black; }" );
|
|
||||||
wMainLayout->addWidget( separatorLine );
|
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
w->setContentsMargins( 4, 4, 2, 2 );
|
w->setContentsMargins( 4, 4, 2, 2 );
|
||||||
@@ -101,6 +71,24 @@ AccountsToolButton::AccountsToolButton( QWidget* parent )
|
|||||||
connect( m_proxy, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ),
|
connect( m_proxy, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ),
|
||||||
this, SLOT( repaint() ) );
|
this, SLOT( repaint() ) );
|
||||||
|
|
||||||
|
QWidget *separatorLine = new QWidget( w );
|
||||||
|
separatorLine->setFixedHeight( 1 );
|
||||||
|
separatorLine->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
separatorLine->setStyleSheet( "QWidget { border-top: 1px solid black; }" );
|
||||||
|
wMainLayout->addWidget( separatorLine );
|
||||||
|
|
||||||
|
QPushButton *settingsButton = new QPushButton( w );
|
||||||
|
settingsButton->setIcon( QIcon( RESPATH "images/account-settings.png" ) );
|
||||||
|
settingsButton->setText( tr( "Configure Accounts" ) );
|
||||||
|
connect( settingsButton, SIGNAL( clicked() ),
|
||||||
|
window(), SLOT( showSettingsDialog() ) );
|
||||||
|
|
||||||
|
QHBoxLayout *bottomLayout = new QHBoxLayout( w );
|
||||||
|
bottomLayout->addStretch();
|
||||||
|
bottomLayout->addWidget( settingsButton );
|
||||||
|
wMainLayout->addLayout( bottomLayout );
|
||||||
|
|
||||||
|
|
||||||
//ToolButton stuff
|
//ToolButton stuff
|
||||||
m_defaultPixmap = QPixmap( RESPATH "images/account-none.png" )
|
m_defaultPixmap = QPixmap( RESPATH "images/account-none.png" )
|
||||||
.scaled( iconSize(),
|
.scaled( iconSize(),
|
||||||
|
Reference in New Issue
Block a user