1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
// wlibrary.cpp
// Created 8/28/2009 by RJ Ryan (rryan@mit.edu)
#include "widget/wlibrary.h"
#include <QMutexLocker>
#include <QtDebug>
#include "controllers/keyboard/keyboardeventfilter.h"
#include "library/libraryview.h"
#include "moc_wlibrary.cpp"
#include "util/math.h"
#include "widget/wtracktableview.h"
WLibrary::WLibrary(QWidget* parent)
: QStackedWidget(parent),
WBaseWidget(this),
m_mutex(QMutex::Recursive),
m_trackTableBackgroundColorOpacity(kDefaultTrackTableBackgroundColorOpacity),
m_bShowButtonText(true) {
}
void WLibrary::setup(const QDomNode& node, const SkinContext& context) {
m_bShowButtonText =
context.selectBool(
node,
"ShowButtonText",
true);
m_trackTableBackgroundColorOpacity = math_clamp(
context.selectDouble(
node,
"TrackTableBackgroundColorOpacity",
kDefaultTrackTableBackgroundColorOpacity),
kMinTrackTableBackgroundColorOpacity,
kMaxTrackTableBackgroundColorOpacity);
}
bool WLibrary::registerView(const QString& name, QWidget* view) {
QMutexLocker lock(&m_mutex);
if (m_viewMap.contains(name)) {
return false;
}
if (dynamic_cast<LibraryView*>(view) == nullptr) {
qDebug() << "WARNING: Attempted to register a view with WLibrary "
<< "that does not implement the LibraryView interface. "
<< "Ignoring.";
return false;
}
addWidget(view);
m_viewMap[name] = view;
return true;
}
void WLibrary::switchToView(const QString& name) {
QMutexLocker lock(&m_mutex);
//qDebug() << "WLibrary::switchToView" << name;
WTrackTableView* ttView = qobject_cast<WTrackTableView*>(
currentWidget());
if (ttView != nullptr){
//qDebug("trying to save position");
ttView->saveCurrentVScrollBarPos();
}
QWidget* widget = m_viewMap.value(name, nullptr);
if (widget != nullptr) {
LibraryView * lview = dynamic_cast<LibraryView*>(widget);
if (lview == nullptr) {
qDebug() << "WARNING: Attempted to register a view with WLibrary "
<< "that does not implement the LibraryView interface. "
<< "Ignoring.";
return;
}
if (currentWidget() != widget) {
//qDebug() << "WLibrary::setCurrentWidget" << name;
setCurrentWidget(widget);
lview->onShow();
}
WTrackTableView* ttWidgetView = qobject_cast<WTrackTableView*>(
widget);
if (ttWidgetView != nullptr){
qDebug("trying to restore position");
ttWidgetView->restoreCurrentVScrollBarPos();
}
}
}
void WLibrary::search(const QString& name) {
QMutexLocker lock(&m_mutex);
QWidget* current = currentWidget();
LibraryView* view = dynamic_cast<LibraryView*>(current);
if (view == nullptr) {
qDebug() << "WARNING: Attempted to register a view with WLibrary "
<< "that does not implement the LibraryView interface. Ignoring.";
return;
}
lock.unlock();
view->onSearch(name);
}
LibraryView* WLibrary::getActiveView() const {
return dynamic_cast<LibraryView*>(currentWidget());
}
bool WLibrary::event(QEvent* pEvent) {
if (pEvent->type() == QEvent::ToolTip) {
updateTooltip();
}
return QStackedWidget::event(pEvent);
}
|