void TabSwitcherWidget::showEvent(QShowEvent *event) { setFocus(); MainWindowSessionItem *mainWindowItem(SessionsManager::getModel()->getMainWindowItem(m_mainWindow)); if (mainWindowItem) { const bool useSorting(SettingsManager::getOption(SettingsManager::Interface_TabSwitchingModeOption).toString() != QLatin1String("noSort")); for (int i = 0; i < mainWindowItem->rowCount(); ++i) { WindowSessionItem *windowItem(static_cast<WindowSessionItem*>(mainWindowItem->child(i, 0))); if (windowItem) { m_model->appendRow(createRow(windowItem->getActiveWindow(), (useSorting ? QVariant(windowItem->getActiveWindow()->getLastActivity()) : QVariant(i)))); } } } m_model->sort(0, ((SettingsManager::getOption(SettingsManager::Interface_TabSwitchingModeOption).toString() == QLatin1String("noSort")) ? Qt::AscendingOrder : Qt::DescendingOrder)); Window *activeWindow(m_mainWindow->getActiveWindow()); const int contentsHeight(m_model->rowCount() * 22); m_tabsView->setCurrentIndex(m_model->index((activeWindow ? findRow(activeWindow->getIdentifier()) : 0), 0)); m_tabsView->setMinimumHeight(qMin(contentsHeight, int(height() * 0.9))); QWidget::showEvent(event); connect(m_mainWindow, SIGNAL(windowAdded(quint64)), this, SLOT(handleWindowAdded(quint64))); connect(m_mainWindow, SIGNAL(windowRemoved(quint64)), this, SLOT(handleWindowRemoved(quint64))); }
void StartupDialog::setSession(int index) { m_windowsModel->clear(); const SessionInformation session(SessionsManager::getSession(m_ui->sessionComboBox->itemData(index).toString())); QFont font(m_ui->windowsTreeView->font()); font.setBold(true); for (int i = 0; i < session.windows.count(); ++i) { QStandardItem *windowItem(new QStandardItem(tr("Window %1").arg(i + 1))); windowItem->setData(session.windows.at(i).geometry, Qt::UserRole); for (int j = 0; j < session.windows.at(i).windows.count(); ++j) { QStandardItem *tabItem(new QStandardItem(session.windows.at(i).windows.at(j).getTitle())); tabItem->setFlags(windowItem->flags() | Qt::ItemIsUserCheckable); tabItem->setData(Qt::Checked, Qt::CheckStateRole); if (j == session.windows.at(i).index) { tabItem->setData(font, Qt::FontRole); } windowItem->appendRow(tabItem); } if (session.windows.count() > 1) { windowItem->setFlags(windowItem->flags() | Qt::ItemIsUserCheckable); windowItem->setData(Qt::Checked, Qt::CheckStateRole); } m_windowsModel->invisibleRootItem()->appendRow(windowItem); } m_ui->windowsTreeView->expandAll(); }
SessionInformation StartupDialog::getSession() const { SessionInformation session; if (m_ui->continueSessionButton->isChecked()) { QList<SessionMainWindow> windows; session = SessionsManager::getSession(m_ui->sessionComboBox->currentData().toString()); for (int i = 0; i < m_windowsModel->rowCount(); ++i) { QStandardItem *windowItem(m_windowsModel->item(i, 0)); if (!windowItem || (windowItem->flags().testFlag(Qt::ItemIsUserCheckable) && windowItem->data(Qt::CheckStateRole).toInt() == Qt::Unchecked)) { continue; } const int index(session.windows.value(i, SessionMainWindow()).index - 1); SessionMainWindow window; window.index = (index + 1); window.geometry = windowItem->data(Qt::UserRole).toByteArray(); for (int j = 0; j < windowItem->rowCount(); ++j) { QStandardItem *tabItem(windowItem->child(j, 0)); if (tabItem && tabItem->data(Qt::CheckStateRole).toInt() == Qt::Checked) { window.windows.append(session.windows.value(i, SessionMainWindow()).windows.value(j, SessionWindow())); } else { if (j == index) { window.index = 1; } else if (j > 0 && j < index) { --window.index; } } } windows.append(window); } session.windows = windows; } else { WindowHistoryEntry entry; if (m_ui->homePageButton->isChecked()) { entry.url = SettingsManager::getValue(QLatin1String("Browser/HomePage")).toString(); } else if (m_ui->startPageRadioButton->isChecked()) { entry.url = QLatin1String("about:start"); } else { entry.url = QLatin1String("about:blank"); } SessionWindow tab; tab.history.append(entry); tab.historyIndex = 0; SessionMainWindow window; window.windows.append(tab); session.path = QLatin1String("default"); session.title = tr("Default"); session.windows.append(window); session.index = 0; } return session; }