void CookiesContentsWidget::populateCookies() { CookieJar *cookieJar = qobject_cast<CookieJar*>(NetworkManagerFactory::getCookieJar()); const QList<QNetworkCookie> cookies = cookieJar->getCookies(); for (int i = 0; i < cookies.count(); ++i) { addCookie(cookies.at(i)); } m_model->sort(0); m_ui->cookiesViewWidget->setViewMode(ItemViewWidget::TreeViewMode); m_ui->cookiesViewWidget->setModel(m_model); m_isLoading = false; emit loadingStateChanged(WindowsManager::FinishedLoadingState); connect(cookieJar, SIGNAL(cookieAdded(QNetworkCookie)), this, SLOT(addCookie(QNetworkCookie))); connect(cookieJar, SIGNAL(cookieRemoved(QNetworkCookie)), this, SLOT(removeCookie(QNetworkCookie))); connect(m_model, SIGNAL(modelReset()), this, SLOT(updateActions())); connect(m_ui->cookiesViewWidget, SIGNAL(needsActionsUpdate()), this, SLOT(updateActions())); }
void PasswordsContentsWidget::populatePasswords() { m_model->clear(); m_model->setHorizontalHeaderLabels(QStringList({tr("Name"), tr("Value")})); const QStringList hosts(PasswordsManager::getHosts()); for (int i = 0; i < hosts.count(); ++i) { const QUrl url(QStringLiteral("http://%1/").arg(hosts.at(i))); const QList<PasswordsManager::PasswordInformation> passwords(PasswordsManager::getPasswords(url)); QStandardItem *hostItem(new QStandardItem(HistoryManager::getIcon(url), hosts.at(i))); hostItem->setData(hosts.at(i), HostRole); for (int j = 0; j < passwords.count(); ++j) { QStandardItem *setItem(new QStandardItem(tr("Set #%1").arg(j + 1))); setItem->setData(passwords.at(j).url, UrlRole); setItem->setData(((passwords.at(j).type == PasswordsManager::AuthPassword) ? QLatin1String("auth") : QLatin1String("form")), AuthTypeRole); for (int k = 0; k < passwords.at(j).fields.count(); ++k) { const bool isPassword(passwords.at(j).fields.at(k).type == PasswordsManager::PasswordField); QList<QStandardItem*> fieldItems({new QStandardItem(passwords.at(j).fields.at(k).name), new QStandardItem(isPassword ? QLatin1String("*****") : passwords.at(j).fields.at(k).value)}); fieldItems[0]->setData((isPassword ? QLatin1String("password") : QLatin1String("text")), FieldTypeRole); setItem->appendRow(fieldItems); } hostItem->appendRow(QList<QStandardItem*>({setItem, new QStandardItem()})); } hostItem->setText(QStringLiteral("%1 (%2)").arg(hosts.at(i)).arg(hostItem->rowCount())); m_model->appendRow(hostItem); } m_model->sort(0); if (m_isLoading) { m_isLoading = false; emit loadingStateChanged(WindowsManager::FinishedLoadingState); connect(PasswordsManager::getInstance(), SIGNAL(passwordsModified()), this, SLOT(populatePasswords())); } }
void TabBarWidget::addTab(int index, Window *window) { insertTab(index, window->getTitle()); setTabData(index, window->getIdentifier()); connect(window, SIGNAL(iconChanged(QIcon)), this, SLOT(updateTabs())); connect(window, SIGNAL(loadingStateChanged(WindowLoadingState)), this, SLOT(updateTabs())); connect(window, SIGNAL(isPinnedChanged(bool)), this, SLOT(updatePinnedTabsAmount())); if (window->isPinned()) { updatePinnedTabsAmount(); } updateTabs(index); }
void TabBarWidget::addTab(int index, Window *window) { insertTab(index, window->getTitle()); setTabData(index, QVariant::fromValue(window)); connect(window, SIGNAL(iconChanged(QIcon)), this, SLOT(updateTabs())); connect(window, SIGNAL(loadingStateChanged(WindowLoadingState)), this, SLOT(updateTabs())); connect(window, SIGNAL(isPinnedChanged(bool)), this, SLOT(updatePinnedTabsAmount())); connect(tabButton(index, QTabBar::LeftSide), SIGNAL(destroyed()), window, SLOT(deleteLater())); if (window->isPinned()) { updatePinnedTabsAmount(); } updateTabs(index); }
QStandardItem* TabSwitcherWidget::createRow(Window *window, const QVariant &index) const { QColor color(palette().color(QPalette::Text)); if (window->getLoadingState() == WebWidget::DelayedLoadingState) { color.setAlpha(150); } QStandardItem* item(new QStandardItem(window->getIcon(), window->getTitle())); item->setData(color, Qt::TextColorRole); item->setData(window->getIdentifier(), IdentifierRole); item->setData(index, OrderRole); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); connect(window, SIGNAL(titleChanged(QString)), this, SLOT(setTitle(QString))); connect(window, SIGNAL(iconChanged(QIcon)), this, SLOT(setIcon(QIcon))); connect(window, SIGNAL(loadingStateChanged(WebWidget::LoadingState)), this, SLOT(setLoadingState(WebWidget::LoadingState))); return item; }
ProgressBarWidget::ProgressBarWidget(Window *window, QWidget *parent) : QFrame(parent), m_window(window), m_geometryUpdateTimer(0) { QHBoxLayout *layout(new QHBoxLayout(this)); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); layout->addWidget(new ToolBarWidget(ToolBarsManager::ProgressBar, window, this)); QPalette palette(this->palette()); palette.setColor(QPalette::Background, palette.color(QPalette::Base)); setPalette(palette); setFrameStyle(QFrame::StyledPanel); setLineWidth(1); palette.setColor(QPalette::Background, palette.color(QPalette::AlternateBase)); hide(); updateLoadingState(window->getLoadingState()); setAutoFillBackground(true); connect(window, SIGNAL(loadingStateChanged(WindowsManager::LoadingState)), this, SLOT(updateLoadingState(WindowsManager::LoadingState))); }
void AddonsContentsWidget::populateAddons() { m_types.clear(); m_types[Addon::UserScriptType] = 0; QStandardItem *userScriptsItem(new QStandardItem(ThemesManager::getIcon(QLatin1String("addon-user-script"), false), tr("User Scripts"))); userScriptsItem->setData(Addon::UserScriptType, TypeRole); m_model->appendRow(userScriptsItem); const QStringList userScripts(AddonsManager::getUserScripts()); for (int i = 0; i < userScripts.count(); ++i) { addAddon(AddonsManager::getUserScript(userScripts.at(i))); } m_ui->addonsViewWidget->setModel(m_model); m_ui->addonsViewWidget->expandAll(); m_isLoading = false; emit loadingStateChanged(WindowsManager::FinishedLoadingState); }
void Window::notifyLoadingStateChanged(bool loading) { emit loadingStateChanged(loading ? LoadingState : LoadedState); }
void TransfersContentsWidget::updateTransfer(Transfer *transfer) { const int row(findTransfer(transfer)); if (row < 0) { return; } QString remainingTime; if (transfer->getState() == Transfer::RunningState) { if (!m_speeds.contains(transfer)) { m_speeds[transfer] = QQueue<qint64>(); } m_speeds[transfer].enqueue(transfer->getSpeed()); if (m_speeds[transfer].count() > 10) { m_speeds[transfer].dequeue(); } if (transfer->getBytesTotal() > 0) { qint64 speedSum(0); const QList<qint64> speeds(m_speeds[transfer]); for (int i = 0; i < speeds.count(); ++i) { speedSum += speeds.at(i); } speedSum /= (speeds.count()); remainingTime = Utils::formatTime(qreal(transfer->getBytesTotal() - transfer->getBytesReceived()) / speedSum); } } else { m_speeds.remove(transfer); } QIcon icon; switch (transfer->getState()) { case Transfer::RunningState: icon = ThemesManager::getIcon(QLatin1String("task-ongoing")); break; case Transfer::FinishedState: icon = ThemesManager::getIcon(QLatin1String("task-complete")); break; default: icon = ThemesManager::getIcon(QLatin1String("task-reject")); break; } m_model->item(row, 0)->setIcon(icon); m_model->item(row, 1)->setText(QFileInfo(transfer->getTarget()).fileName()); m_model->item(row, 2)->setText(Utils::formatUnit(transfer->getBytesTotal(), false, 1)); m_model->item(row, 3)->setText((transfer->getBytesTotal() > 0) ? QString::number(qFloor((static_cast<qreal>(transfer->getBytesReceived()) / transfer->getBytesTotal()) * 100), 'f', 0) : QString()); m_model->item(row, 4)->setText(remainingTime); m_model->item(row, 5)->setText((transfer->getState() == Transfer::RunningState) ? Utils::formatUnit(transfer->getSpeed(), true, 1) : QString()); m_model->item(row, 6)->setText(transfer->getTimeStarted().toString(QLatin1String("yyyy-MM-dd HH:mm:ss"))); m_model->item(row, 7)->setText(transfer->getTimeFinished().toString(QLatin1String("yyyy-MM-dd HH:mm:ss"))); const QString tooltip(tr("<div style=\"white-space:pre;\">Source: %1\nTarget: %2\nSize: %3\nDownloaded: %4\nProgress: %5</div>").arg(transfer->getSource().toDisplayString().toHtmlEscaped()).arg(transfer->getTarget().toHtmlEscaped()).arg(Utils::formatUnit(transfer->getBytesTotal(), false, 1, true)).arg(Utils::formatUnit(transfer->getBytesReceived(), false, 1, true)).arg(QStringLiteral("%1%").arg(((transfer->getBytesTotal() > 0) ? ((static_cast<qreal>(transfer->getBytesReceived()) / transfer->getBytesTotal()) * 100) : 0.0), 0, 'f', 1))); for (int i = 0; i < m_model->columnCount(); ++i) { m_model->item(row, i)->setToolTip(tooltip); } if (m_ui->transfersViewWidget->selectionModel()->hasSelection()) { updateActions(); } const bool isRunning(transfer && transfer->getState() == Transfer::RunningState); if (isRunning != m_isLoading) { if (isRunning) { m_isLoading = true; emit loadingStateChanged(WindowsManager::OngoingLoadingState); } else { const QList<Transfer*> transfers(TransfersManager::getTransfers()); bool hasRunning(false); for (int i = 0; i < transfers.count(); ++i) { if (transfers.at(i) && transfers.at(i)->getState() == Transfer::RunningState) { hasRunning = true; break; } } if (!hasRunning) { m_isLoading = false; emit loadingStateChanged(WindowsManager::FinishedLoadingState); } } } }
void PasswordsContentsWidget::populatePasswords() { m_model->clear(); m_model->setHorizontalHeaderLabels({tr("Name"), tr("Value")}); m_model->setHeaderData(0, Qt::Horizontal, 500, HeaderViewWidget::WidthRole); const QStringList hosts(PasswordsManager::getHosts()); for (int i = 0; i < hosts.count(); ++i) { const QUrl url(QStringLiteral("http://%1/").arg(hosts.at(i))); const QVector<PasswordsManager::PasswordInformation> passwords(PasswordsManager::getPasswords(url)); QStandardItem *hostItem(new QStandardItem(HistoryManager::getIcon(url), hosts.at(i))); hostItem->setData(hosts.at(i), HostRole); hostItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); for (int j = 0; j < passwords.count(); ++j) { QStandardItem *setItem(new QStandardItem(tr("Set #%1").arg(j + 1))); setItem->setData(passwords.at(j).url, UrlRole); setItem->setData(((passwords.at(j).type == PasswordsManager::AuthPassword) ? QLatin1String("auth") : QLatin1String("form")), AuthTypeRole); setItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); for (int k = 0; k < passwords.at(j).fields.count(); ++k) { QList<QStandardItem*> fieldItems({new QStandardItem(passwords.at(j).fields.at(k).name), new QStandardItem(passwords.at(j).fields.at(k).value)}); fieldItems[0]->setData(passwords.at(j).fields.at(k).type, FieldTypeRole); fieldItems[0]->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren); fieldItems[1]->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemNeverHasChildren); setItem->appendRow(fieldItems); } hostItem->appendRow({setItem, new QStandardItem()}); } hostItem->setText(QStringLiteral("%1 (%2)").arg(hosts.at(i)).arg(hostItem->rowCount())); m_model->appendRow(hostItem); for (int j = 0; j < hostItem->rowCount(); ++j) { const QStandardItem *setItem(hostItem->child(j)); if (setItem) { m_ui->passwordsViewWidget->expand(setItem->index()); } } } m_model->sort(0); if (m_isLoading) { m_isLoading = false; emit loadingStateChanged(WebWidget::FinishedLoadingState); connect(PasswordsManager::getInstance(), &PasswordsManager::passwordsModified, this, &PasswordsContentsWidget::populatePasswords); connect(m_ui->passwordsViewWidget->selectionModel(), &QItemSelectionModel::selectionChanged, [&]() { emit arbitraryActionsStateChanged({ActionsManager::DeleteAction}); }); } }