Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2025 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 : #include "testtableviewmodel.h"
23 :
24 : #include "global/types/translatablestring.h"
25 : #include "internal/tableviewheader.h"
26 :
27 : using namespace muse::uicomponents;
28 :
29 0 : TestTableViewModel::TestTableViewModel(QObject* parent)
30 0 : : AbstractTableViewModel(parent)
31 : {
32 0 : load();
33 0 : }
34 :
35 0 : void TestTableViewModel::load()
36 : {
37 0 : QVector<QVector<TableViewCell*> > table;
38 :
39 0 : const ValList listOptions { Val("Item 1"), Val("Item 2"), Val("Item 3") };
40 0 : const ValList colorOptions { Val("Red"), Val("Green"), Val("Blue") };
41 :
42 0 : table.append({
43 0 : makeCell(Val("Charlie")),
44 0 : makeCell(Val(listOptions), Val("Item 2")),
45 0 : makeCell(Val("12h34m56.789 s")),
46 0 : makeCell(Val(3.5)),
47 0 : makeCell(Val("00h05m12.000 s")),
48 0 : makeCell(Val(colorOptions), Val("Red")),
49 : });
50 :
51 0 : table.append({
52 0 : makeCell(Val("Alpha")),
53 0 : makeCell(Val(listOptions), Val("Item 3")),
54 0 : makeCell(Val("00h00m00.000 s")),
55 0 : makeCell(Val(-1.25)),
56 0 : makeCell(Val("01h22m07.500 s")),
57 0 : makeCell(Val(colorOptions), Val("Green")),
58 : });
59 :
60 0 : table.append({
61 0 : makeCell(Val("Echo")),
62 0 : makeCell(Val(listOptions), Val("Item 1")),
63 0 : makeCell(Val("00h00m00.000 s")),
64 0 : makeCell(Val(10.0)),
65 0 : makeCell(Val("00h00m45.250 s")),
66 0 : makeCell(Val(colorOptions), Val("Blue")),
67 : });
68 :
69 0 : table.append({
70 0 : makeCell(Val("Bravo")),
71 0 : makeCell(Val(listOptions), Val("Item 1")),
72 0 : makeCell(Val("00h00m00.000 s")),
73 0 : makeCell(Val(0.0)),
74 0 : makeCell(Val("02h15m30.000 s")),
75 0 : makeCell(Val(colorOptions), Val("Green")),
76 : });
77 :
78 0 : table.append({
79 0 : makeCell(Val("Foxtrot")),
80 0 : makeCell(Val(listOptions), Val("Item 3")),
81 0 : makeCell(Val("00h00m00.000 s")),
82 0 : makeCell(Val(7.75)),
83 0 : makeCell(Val("00h45m00.000 s")),
84 0 : makeCell(Val(colorOptions), Val("Blue")),
85 : });
86 :
87 0 : table.append({
88 0 : makeCell(Val("Delta")),
89 0 : makeCell(Val(listOptions), Val("Item 2")),
90 0 : makeCell(Val("00h00m00.000 s")),
91 0 : makeCell(Val(2.0)),
92 0 : makeCell(Val("00h00m00.000 s")),
93 0 : makeCell(Val(colorOptions), Val("Red")),
94 : });
95 :
96 0 : table.append({
97 0 : makeCell(Val("Bravo")),
98 0 : makeCell(Val(listOptions), Val("Item 2")),
99 0 : makeCell(Val("00h00m00.000 s")),
100 0 : makeCell(Val(5.0)),
101 0 : makeCell(Val("00h12m00.000 s")),
102 0 : makeCell(Val(colorOptions), Val("Blue")),
103 : });
104 :
105 0 : table.append({
106 0 : makeCell(Val("Golf")),
107 0 : makeCell(Val(listOptions), Val("Item 1")),
108 0 : makeCell(Val("00h00m00.000 s")),
109 0 : makeCell(Val(-3.0)),
110 0 : makeCell(Val("03h00m00.000 s")),
111 0 : makeCell(Val(colorOptions), Val("Green")),
112 : });
113 :
114 : QList<TableViewHeader*> hHeaders = {
115 0 : makeHorizontalHeader("Column 1", TableViewCellType::Type::String, TableViewCellEditMode::Mode::DoubleClick, 100),
116 0 : makeHorizontalHeader("Column 2", TableViewCellType::Type::List, TableViewCellEditMode::Mode::DoubleClick, 100),
117 0 : makeHorizontalHeader("Column 3", static_cast<TableViewCellType::Type>(TestTableViewCellType::Type::Custom),
118 0 : TableViewCellEditMode::Mode::StartInEdit, 200, makeAvailableFormats()),
119 0 : makeHorizontalHeader("Column 4", TableViewCellType::Type::Double, TableViewCellEditMode::Mode::StartInEdit, 200),
120 0 : makeHorizontalHeader("Column 5", TableViewCellType::Type::String, TableViewCellEditMode::Mode::StartInEdit, 300),
121 0 : makeHorizontalHeader("Column 6", TableViewCellType::Type::List, TableViewCellEditMode::Mode::DoubleClick, 100),
122 0 : };
123 :
124 0 : setHorizontalHeaders(hHeaders);
125 :
126 0 : setTable(table);
127 0 : }
128 :
129 0 : bool TestTableViewModel::doCellValueChangeRequested(int row, int column, const Val& value)
130 : {
131 : Q_UNUSED(row);
132 : Q_UNUSED(column);
133 : Q_UNUSED(value);
134 0 : return true;
135 : }
136 :
137 0 : MenuItemList TestTableViewModel::makeAvailableFormats()
138 : {
139 0 : MenuItemList items;
140 :
141 0 : MenuItem* item1 = new MenuItem(this);
142 0 : item1->setTitle(TranslatableString::untranslatable("Default"));
143 0 : item1->setSelectable(true);
144 0 : items << item1;
145 :
146 0 : MenuItem* item2 = new MenuItem(this);
147 0 : item2->setTitle(TranslatableString::untranslatable("Accent"));
148 0 : item2->setSelectable(true);
149 0 : items << item2;
150 :
151 0 : return items;
152 0 : }
|