SettingsDialog::SettingsDialog(Application *app, QWidget *parent) : QDialog(parent), _ui(new Ui::SettingsDialog) { _ui->setupUi(this); setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(tr("%1 Settings").arg(Theme::instance()->appNameGUI())); QIcon generalIcon(QLatin1String(":/mirall/resources/settings.png")); QListWidgetItem *general = new QListWidgetItem(generalIcon, tr("General"), _ui->labelWidget); general->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(general); GeneralSettings *generalSettings = new GeneralSettings; _ui->stack->addWidget(generalSettings); QIcon networkIcon(QLatin1String(":/mirall/resources/network.png")); QListWidgetItem *network = new QListWidgetItem(networkIcon, tr("Network"), _ui->labelWidget); network->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(network); NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); connect(networkSettings, SIGNAL(proxySettingsChanged()), app, SLOT(slotSetupProxy())); connect(networkSettings, SIGNAL(proxySettingsChanged()), FolderMan::instance(), SLOT(slotScheduleAllFolders())); //connect(generalSettings, SIGNAL(resizeToSizeHint()), SLOT(resizeToSizeHint())); _accountSettings = new AccountSettings(this); addAccount(tr("Account"), _accountSettings); slotUpdateAccountState(); connect( app, SIGNAL(folderStateChanged(Folder*)), _accountSettings, SLOT(slotUpdateFolderState(Folder*))); connect( app, SIGNAL(folderStateChanged(Folder*)), SLOT(slotUpdateAccountState())); connect( _accountSettings, SIGNAL(addASync()), app, SLOT(slotFolderAdded()) ); connect( _accountSettings, SIGNAL(folderChanged()), app, SLOT(slotFoldersChanged())); connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)), app, SLOT(slotFolderOpenAction(QString))); connect( _accountSettings, SIGNAL(openProgressDialog()), app, SLOT(slotItemProgressDialog())); connect( ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, Progress::Info)), _accountSettings, SLOT(slotSetProgress(QString, Progress::Info)) ); connect( ProgressDispatcher::instance(), SIGNAL(progressSyncProblem(QString,Progress::SyncProblem)), _accountSettings, SLOT(slotProgressProblem(QString,Progress::SyncProblem)) ); _ui->labelWidget->setCurrentRow(_ui->labelWidget->row(general)); connect(_ui->labelWidget, SIGNAL(currentRowChanged(int)), _ui->stack, SLOT(setCurrentIndex(int))); QPushButton *closeButton = _ui->buttonBox->button(QDialogButtonBox::Close); connect(closeButton, SIGNAL(pressed()), SLOT(accept())); MirallConfigFile cfg; cfg.restoreGeometry(this); }
void MainDialog::NowRun() { centerWidget(this); this->show(); obj_this = this; ui.setupUi(this); QIcon accountIcon(QLatin1String(":rc/user.png")); QListWidgetItem *account = new QListWidgetItem(accountIcon, "Account", ui.labelWidget); account->setSizeHint(QSize(0, 32)); this->accountSettings = new AccountSettings(this); ui.stack->addWidget(this->accountSettings); QIcon syslogIcon(QLatin1String(":rc/loop_alt4.png")); QListWidgetItem *syslog = new QListWidgetItem(syslogIcon, "Log Activity", ui.labelWidget); syslog->setSizeHint(QSize(0, 32)); this->logSettings = new LogSettings; ui.stack->addWidget(this->logSettings); QIcon generalIcon(QLatin1String(":rc/cog.png")); QListWidgetItem *general = new QListWidgetItem(generalIcon, "General", ui.labelWidget); general->setSizeHint(QSize(0, 32)); this->generalSettings = new GeneralSettings(this); ui.stack->addWidget(this->generalSettings); ui.labelWidget->setCurrentRow(ui.labelWidget->row(account)); connect(ui.labelWidget, SIGNAL(currentRowChanged(int)), ui.stack, SLOT(setCurrentIndex(int))); connect(this->ui.exitButton, SIGNAL(clicked()), this, SLOT(slotExit())); createTrayIcon(); setTrayIcon(); trayIcon->show(); agent_cfg = (struct agent_cfg*)calloc(1, sizeof(struct agent_cfg)); agent_cfg->ev.on_log = this->onLog; if (agent_config_init(agent_cfg)) { jlog(L_ERROR, "agent_config_init failed"); return; } if (agent_cfg->auto_connect != 0) { emit this->generalSettings->slotCheckAutoConnect(); emit accountSettings->slotConnWaiting(); emit this->slotFireConnection(); } }
// // Whenever you change something here check both settingsdialog.cpp and settingsdialogmac.cpp ! // SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : QDialog(parent) , _ui(new Ui::SettingsDialog), _gui(gui) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); _ui->setupUi(this); QToolBar *toolBar = new QToolBar; toolBar->setIconSize(QSize(32,32)); QString highlightColor(palette().highlight().color().name()); QString altBase(palette().alternateBase().color().name()); QString dark(palette().dark().color().name()); toolBar->setStyleSheet(QString::fromAscii(TOOLBAR_CSS).arg(dark).arg(highlightColor).arg(altBase)); toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); layout()->setMenuBar(toolBar); // People perceive this as a Window, so also make Ctrl+W work QAction *closeWindowAction = new QAction(this); closeWindowAction->setShortcut(QKeySequence("Ctrl+W")); connect(closeWindowAction, SIGNAL(triggered()), SLOT(accept())); addAction(closeWindowAction); setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(Theme::instance()->appNameGUI()); // Add a spacer so config buttonns are right aligned and account buttons will be left aligned auto spacer = new QWidget(); 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") + 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") + 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") + QLatin1Char('\n')); networkAction->setCheckable(true); NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); _actions.insert(_protocolAction, protocolWidget); _actions.insert(generalAction, generalSettings); _actions.insert(networkAction, networkSettings); QActionGroup *group = new QActionGroup(this); group->addAction(_protocolAction); group->addAction(generalAction); group->addAction(networkAction); group->setExclusive(true); connect(group, SIGNAL(triggered(QAction*)), SLOT(slotSwitchPage(QAction*))); connect(AccountManager::instance(), SIGNAL(accountAdded(AccountState*)), this, SLOT(accountAdded(AccountState*))); connect(AccountManager::instance(), SIGNAL(accountRemoved(AccountState*)), this, SLOT(accountRemoved(AccountState*))); foreach (auto ai , AccountManager::instance()->accounts()) { accountAdded(ai.data()); }
SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : QDialog(parent), _ui(new Ui::SettingsDialog) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); _ui->setupUi(this); setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(tr("%1").arg(Theme::instance()->appNameGUI())); _accountSettings = new AccountSettings(this); addAccount(tr("Account"), _accountSettings); QIcon protocolIcon(QLatin1String(":/mirall/resources/activity.png")); QListWidgetItem *protocol= new QListWidgetItem(protocolIcon, tr("Activity"), _ui->labelWidget); protocol->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(protocol); _protocolWidget = new ProtocolWidget; _protocolIdx = _ui->stack->addWidget(_protocolWidget); QIcon generalIcon(QLatin1String(":/mirall/resources/settings.png")); QListWidgetItem *general = new QListWidgetItem(generalIcon, tr("General"), _ui->labelWidget); general->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(general); GeneralSettings *generalSettings = new GeneralSettings; _ui->stack->addWidget(generalSettings); QIcon networkIcon(QLatin1String(":/mirall/resources/network.png")); QListWidgetItem *network = new QListWidgetItem(networkIcon, tr("Network"), _ui->labelWidget); network->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(network); NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); connect( _accountSettings, SIGNAL(folderChanged()), gui, SLOT(slotFoldersChanged())); connect( _accountSettings, SIGNAL(accountIconChanged(QIcon)), SLOT(slotUpdateAccountIcon(QIcon))); connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)), gui, SLOT(slotFolderOpenAction(QString))); connect( ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, Progress::Info)), _accountSettings, SLOT(slotSetProgress(QString, Progress::Info)) ); _ui->labelWidget->setCurrentRow(_ui->labelWidget->row(_accountItem)); connect(_ui->labelWidget, SIGNAL(currentRowChanged(int)), _ui->stack, SLOT(setCurrentIndex(int))); QPushButton *closeButton = _ui->buttonBox->button(QDialogButtonBox::Close); connect(closeButton, SIGNAL(clicked()), SLOT(accept())); QAction *showLogWindow = new QAction(this); showLogWindow->setShortcut(QKeySequence("F12")); connect(showLogWindow, SIGNAL(triggered()), gui, SLOT(slotToggleLogBrowser())); addAction(showLogWindow); int iconSize = 32; QListWidget *listWidget = _ui->labelWidget; int spacing = 20; // reverse at least ~8 characters int effectiveWidth = fontMetrics().averageCharWidth() * 8 + iconSize + spacing; // less than ~16 characters, elide otherwise int maxWidth = fontMetrics().averageCharWidth() * 16 + iconSize + spacing; for (int i = 0; i < listWidget->count(); i++) { QListWidgetItem *item = listWidget->item(i); QFontMetrics fm(item->font()); int curWidth = fm.width(item->text()) + iconSize + spacing; effectiveWidth = qMax(curWidth, effectiveWidth); if (curWidth > maxWidth) item->setToolTip(item->text()); } effectiveWidth = qMin(effectiveWidth, maxWidth); listWidget->setFixedWidth(effectiveWidth); MirallConfigFile cfg; cfg.restoreGeometry(this); }