Changeset View
Changeset View
Standalone View
Standalone View
src/ViewManager.cpp
Show First 20 Lines • Show All 258 Lines • ▼ Show 20 Line(s) | 106 | { | |||
---|---|---|---|---|---|
259 | for (int i = 0; i < SWITCH_TO_TAB_COUNT; i++) { | 259 | for (int i = 0; i < SWITCH_TO_TAB_COUNT; i++) { | ||
260 | action = new QAction(i18nc("@action Shortcut entry", "Switch to Tab %1", i + 1), this); | 260 | action = new QAction(i18nc("@action Shortcut entry", "Switch to Tab %1", i + 1), this); | ||
261 | connect(action, &QAction::triggered, this, [this, i]() { switchToView(i); }); | 261 | connect(action, &QAction::triggered, this, [this, i]() { switchToView(i); }); | ||
262 | collection->addAction(QStringLiteral("switch-to-tab-%1").arg(i), action); | 262 | collection->addAction(QStringLiteral("switch-to-tab-%1").arg(i), action); | ||
263 | } | 263 | } | ||
264 | 264 | | |||
265 | auto handleMultiTabActionsLambda = [=]{ | 265 | auto handleMultiTabActionsLambda = [=]{ | ||
266 | const int count = _viewContainer->count(); | 266 | const int count = _viewContainer->count(); | ||
267 | foreach(QAction *tabOnlyAction, _multiTabOnlyActions) { | 267 | for (auto *tabOnlyAction : _multiTabOnlyActions) { | ||
268 | tabOnlyAction->setEnabled(count > 1); | 268 | tabOnlyAction->setEnabled(count > 1); | ||
269 | } | 269 | } | ||
270 | }; | 270 | }; | ||
271 | connect(_viewContainer, &TabbedViewContainer::viewAdded, this, handleMultiTabActionsLambda); | 271 | connect(_viewContainer, &TabbedViewContainer::viewAdded, this, handleMultiTabActionsLambda); | ||
272 | connect(_viewContainer, &TabbedViewContainer::viewRemoved, this, handleMultiTabActionsLambda); | 272 | connect(_viewContainer, &TabbedViewContainer::viewRemoved, this, handleMultiTabActionsLambda); | ||
273 | 273 | | |||
274 | connect(_viewContainer, &QTabWidget::currentChanged, this, &ViewManager::updateDetachViewState); | 274 | connect(_viewContainer, &QTabWidget::currentChanged, this, &ViewManager::updateDetachViewState); | ||
275 | 275 | | |||
Show All 25 Lines | |||||
301 | { | 301 | { | ||
302 | if (_viewContainer && _viewContainer->activeViewSplitter()) { | 302 | if (_viewContainer && _viewContainer->activeViewSplitter()) { | ||
303 | const int splitCount = _viewContainer | 303 | const int splitCount = _viewContainer | ||
304 | ->activeViewSplitter() | 304 | ->activeViewSplitter() | ||
305 | ->getToplevelSplitter() | 305 | ->getToplevelSplitter() | ||
306 | ->findChildren<TerminalDisplay*>() | 306 | ->findChildren<TerminalDisplay*>() | ||
307 | .count(); | 307 | .count(); | ||
308 | 308 | | |||
309 | foreach (QAction *action, _multiSplitterOnlyActions) { | 309 | for (auto *action : _multiSplitterOnlyActions) { | ||
310 | action->setEnabled(splitCount > 1); | 310 | action->setEnabled(splitCount > 1); | ||
311 | } | 311 | } | ||
312 | } | 312 | } | ||
313 | } | 313 | } | ||
314 | 314 | | |||
315 | void ViewManager::focusUp() | 315 | void ViewManager::focusUp() | ||
316 | { | 316 | { | ||
317 | _viewContainer->activeViewSplitter()->focusUp(); | 317 | _viewContainer->activeViewSplitter()->focusUp(); | ||
▲ Show 20 Lines • Show All 114 Lines • ▼ Show 20 Line(s) | 431 | { | |||
432 | ViewSplitter* splitter = _viewContainer->viewSplitterAt(tabIdx); | 432 | ViewSplitter* splitter = _viewContainer->viewSplitterAt(tabIdx); | ||
433 | QHash<TerminalDisplay*, Session*> detachedSessions = forgetAll(_viewContainer->viewSplitterAt(tabIdx)); | 433 | QHash<TerminalDisplay*, Session*> detachedSessions = forgetAll(_viewContainer->viewSplitterAt(tabIdx)); | ||
434 | emit terminalsDetached(splitter, detachedSessions); | 434 | emit terminalsDetached(splitter, detachedSessions); | ||
435 | } | 435 | } | ||
436 | 436 | | |||
437 | QHash<TerminalDisplay*, Session*> ViewManager::forgetAll(ViewSplitter* splitter) { | 437 | QHash<TerminalDisplay*, Session*> ViewManager::forgetAll(ViewSplitter* splitter) { | ||
438 | splitter->setParent(nullptr); | 438 | splitter->setParent(nullptr); | ||
439 | QHash<TerminalDisplay*, Session*> detachedSessions; | 439 | QHash<TerminalDisplay*, Session*> detachedSessions; | ||
440 | foreach(TerminalDisplay* terminal, splitter->findChildren<TerminalDisplay*>()) { | 440 | for (auto* terminal : splitter->findChildren<TerminalDisplay*>()) { | ||
441 | Session* session = forgetTerminal(terminal); | 441 | Session* session = forgetTerminal(terminal); | ||
442 | detachedSessions[terminal] = session; | 442 | detachedSessions[terminal] = session; | ||
443 | } | 443 | } | ||
444 | return detachedSessions; | 444 | return detachedSessions; | ||
445 | } | 445 | } | ||
446 | 446 | | |||
447 | Session* ViewManager::forgetTerminal(TerminalDisplay* terminal) | 447 | Session* ViewManager::forgetTerminal(TerminalDisplay* terminal) | ||
448 | { | 448 | { | ||
▲ Show 20 Lines • Show All 359 Lines • ▼ Show 20 Line(s) | 805 | { | |||
808 | emit updateWindowIcon(); | 808 | emit updateWindowIcon(); | ||
809 | emit blurSettingChanged(view->colorScheme()->blur()); | 809 | emit blurSettingChanged(view->colorScheme()->blur()); | ||
810 | } | 810 | } | ||
811 | 811 | | |||
812 | void ViewManager::updateViewsForSession(Session *session) | 812 | void ViewManager::updateViewsForSession(Session *session) | ||
813 | { | 813 | { | ||
814 | const Profile::Ptr profile = SessionManager::instance()->sessionProfile(session); | 814 | const Profile::Ptr profile = SessionManager::instance()->sessionProfile(session); | ||
815 | 815 | | |||
816 | const QList<TerminalDisplay *> sessionMapKeys = _sessionMap.keys(session); | 816 | for (auto *view : _sessionMap.keys(session)) { | ||
817 | foreach (TerminalDisplay *view, sessionMapKeys) { | | |||
818 | applyProfileToView(view, profile); | 817 | applyProfileToView(view, profile); | ||
819 | } | 818 | } | ||
820 | } | 819 | } | ||
821 | 820 | | |||
822 | void ViewManager::profileChanged(const Profile::Ptr &profile) | 821 | void ViewManager::profileChanged(const Profile::Ptr &profile) | ||
823 | { | 822 | { | ||
824 | // update all views associated with this profile | 823 | // update all views associated with this profile | ||
825 | QHashIterator<TerminalDisplay *, Session *> iter(_sessionMap); | 824 | QHashIterator<TerminalDisplay *, Session *> iter(_sessionMap); | ||
Show All 16 Lines | 838 | { | |||
842 | TabbedViewContainer *container = _viewContainer; | 841 | TabbedViewContainer *container = _viewContainer; | ||
843 | if (container == nullptr) { | 842 | if (container == nullptr) { | ||
844 | return {}; | 843 | return {}; | ||
845 | } | 844 | } | ||
846 | 845 | | |||
847 | auto terminalContainers = _viewContainer->findChildren<TerminalDisplay*>(); | 846 | auto terminalContainers = _viewContainer->findChildren<TerminalDisplay*>(); | ||
848 | list.reserve(terminalContainers.size()); | 847 | list.reserve(terminalContainers.size()); | ||
849 | 848 | | |||
850 | for(auto terminalDisplay : _viewContainer->findChildren<TerminalDisplay*>()) { | 849 | for (auto terminalDisplay : _viewContainer->findChildren<TerminalDisplay*>()) { | ||
851 | list.append(terminalDisplay->sessionController()); | 850 | list.append(terminalDisplay->sessionController()); | ||
852 | } | 851 | } | ||
853 | 852 | | |||
854 | return list; | 853 | return list; | ||
855 | } | 854 | } | ||
856 | 855 | | |||
857 | namespace { | 856 | namespace { | ||
858 | QJsonObject saveSessionTerminal(TerminalDisplay *terminalDisplay) | 857 | QJsonObject saveSessionTerminal(TerminalDisplay *terminalDisplay) | ||
Show All 29 Lines | 866 | QJsonObject saveSessionsRecurse(QSplitter *splitter) { | |||
888 | return thisSplitter; | 887 | return thisSplitter; | ||
889 | } | 888 | } | ||
890 | 889 | | |||
891 | } // namespace | 890 | } // namespace | ||
892 | 891 | | |||
893 | void ViewManager::saveSessions(KConfigGroup &group) | 892 | void ViewManager::saveSessions(KConfigGroup &group) | ||
894 | { | 893 | { | ||
895 | QJsonArray rootArray; | 894 | QJsonArray rootArray; | ||
896 | for(int i = 0; i < _viewContainer->count(); i++) { | 895 | for (int i = 0; i < _viewContainer->count(); i++) { | ||
897 | QSplitter *splitter = qobject_cast<QSplitter*>(_viewContainer->widget(i)); | 896 | QSplitter *splitter = qobject_cast<QSplitter*>(_viewContainer->widget(i)); | ||
898 | rootArray.append(saveSessionsRecurse(splitter)); | 897 | rootArray.append(saveSessionsRecurse(splitter)); | ||
899 | } | 898 | } | ||
900 | 899 | | |||
901 | group.writeEntry("Tabs", QJsonDocument(rootArray).toJson(QJsonDocument::Compact)); | 900 | group.writeEntry("Tabs", QJsonDocument(rootArray).toJson(QJsonDocument::Compact)); | ||
902 | group.writeEntry("Active", _viewContainer->currentIndex()); | 901 | group.writeEntry("Active", _viewContainer->currentIndex()); | ||
903 | } | 902 | } | ||
904 | 903 | | |||
▲ Show 20 Lines • Show All 220 Lines • Show Last 20 Lines |