decoupled ui from effect row

This commit is contained in:
itsmattkc
2019-03-12 20:12:12 +11:00
parent 170fe9bd01
commit 0b090ddc21
45 changed files with 416 additions and 432 deletions
+29 -18
View File
@@ -119,13 +119,22 @@ void KeyframeView::paintEvent(QPaintEvent*) {
for (int j=0;j<e->row_count();j++) {
EffectRow* row = e->row(j);
// TODO address this
/*
ClickableLabel* label = row->label;
QWidget* contents = e->container->contents;
QVector<long> key_times;
int keyframe_y = label->y() + (label->height()>>1) + mapFrom(panel_effect_controls, contents->mapTo(panel_effect_controls, contents->pos())).y() - e->container->title_bar->height()/* - y_scroll*/;
for (int l=0;l<row->fieldCount();l++) {
EffectField* f = row->field(l);
int keyframe_y = label->y()
+ (label->height()>>1)
+ mapFrom(panel_effect_controls, contents->mapTo(panel_effect_controls, contents->pos())).y()
- e->container->title_bar->height();
for (int l=0;l<row->FieldCount();l++) {
EffectField* f = row->Field(l);
for (int k=0;k<f->keyframes.size();k++) {
if (!key_times.contains(f->keyframes.at(k).time)) {
bool keyframe_selected = keyframeIsSelected(f, k);
@@ -133,8 +142,8 @@ void KeyframeView::paintEvent(QPaintEvent*) {
// see if any other keyframes have this time
int appearances = 0;
for (int m=0;m<row->fieldCount();m++) {
EffectField* compf = row->field(m);
for (int m=0;m<row->FieldCount();m++) {
EffectField* compf = row->Field(m);
for (int n=0;n<compf->keyframes.size();n++) {
if (f->keyframes.at(k).time == compf->keyframes.at(n).time) {
appearances++;
@@ -142,8 +151,8 @@ void KeyframeView::paintEvent(QPaintEvent*) {
}
}
if (appearances != row->fieldCount()) {
QColor cc = get_curve_color(l, row->fieldCount());
if (appearances != row->FieldCount()) {
QColor cc = get_curve_color(l, row->FieldCount());
draw_keyframe(p, f->keyframes.at(k).type, getScreenPointFromFrame(panel_effect_controls->zoom, keyframe_frame) - x_scroll, keyframe_y, keyframe_selected, cc.red(), cc.green(), cc.blue());
} else {
draw_keyframe(p, f->keyframes.at(k).type, getScreenPointFromFrame(panel_effect_controls->zoom, keyframe_frame) - x_scroll, keyframe_y, keyframe_selected);
@@ -156,6 +165,8 @@ void KeyframeView::paintEvent(QPaintEvent*) {
rows.append(row);
rowY.append(keyframe_y);
*/
}
}
}
@@ -252,10 +263,10 @@ void KeyframeView::mousePressEvent(QMouseEvent *event) {
row->FocusRow();
for (int k=0;k<row->fieldCount();k++) {
EffectField* f = row->field(k);
for (int k=0;k<row->FieldCount();k++) {
EffectField* f = row->Field(k);
for (int j=0;j<f->keyframes.size();j++) {
long eval_keyframe_time = f->keyframes.at(j).time-row->parent_effect->parent_clip->clip_in()+(row->parent_effect->parent_clip->timeline_in()-visible_in);
long eval_keyframe_time = f->keyframes.at(j).time-row->GetParentEffect()->parent_clip->clip_in()+(row->GetParentEffect()->parent_clip->timeline_in()-visible_in);
if (eval_keyframe_time >= frame_min && eval_keyframe_time <= frame_max) {
long eval_frame_diff = qAbs(eval_keyframe_time - drag_frame_start);
if (keyframe_index == -1 || eval_frame_diff < frame_diff) {
@@ -273,7 +284,7 @@ void KeyframeView::mousePressEvent(QMouseEvent *event) {
bool already_selected = false;
keys_selected = false;
if (keyframe_index > -1) {
already_selected = keyframeIsSelected(rows.at(row_index)->field(field_index), keyframe_index);
already_selected = keyframeIsSelected(rows.at(row_index)->Field(field_index), keyframe_index);
} else {
select_rect = true;
}
@@ -283,14 +294,14 @@ void KeyframeView::mousePressEvent(QMouseEvent *event) {
selected_keyframes.clear();
}
if (keyframe_index > -1) {
selected_fields.append(rows.at(row_index)->field(field_index));
selected_fields.append(rows.at(row_index)->Field(field_index));
selected_keyframes.append(keyframe_index);
// find other field with keyframes at the same time
long comp_time = rows.at(row_index)->field(field_index)->keyframes.at(keyframe_index).time;
for (int i=0;i<rows.at(row_index)->fieldCount();i++) {
long comp_time = rows.at(row_index)->Field(field_index)->keyframes.at(keyframe_index).time;
for (int i=0;i<rows.at(row_index)->FieldCount();i++) {
if (i != field_index) {
EffectField* f = rows.at(row_index)->field(i);
EffectField* f = rows.at(row_index)->Field(i);
for (int j=0;j<f->keyframes.size();j++) {
if (f->keyframes.at(j).time == comp_time) {
selected_fields.append(f);
@@ -353,8 +364,8 @@ void KeyframeView::mouseMoveEvent(QMouseEvent* event) {
for (int i=0;i<rowY.size();i++) {
if (rowY.at(i) >= min_row && rowY.at(i) <= max_row) {
EffectRow* row = rows.at(i);
for (int k=0;k<row->fieldCount();k++) {
EffectField* field = row->field(k);
for (int k=0;k<row->FieldCount();k++) {
EffectField* field = row->Field(k);
for (int j=0;j<field->keyframes.size();j++) {
long keyframe_frame = adjust_row_keyframe(row, field->keyframes.at(j).time, visible_in);
if (!keyframeIsSelected(field, j) && keyframe_frame >= min_frame && keyframe_frame <= max_frame) {
@@ -376,7 +387,7 @@ void KeyframeView::mouseMoveEvent(QMouseEvent* event) {
if (panel_timeline->snapping) {
for (int i=0;i<selected_keyframes.size();i++) {
EffectField* field = selected_fields.at(i);
Clip* c = field->GetParentRow()->parent_effect->parent_clip;
Clip* c = field->GetParentRow()->GetParentEffect()->parent_clip;
long key_time = old_key_vals.at(i) + frame_diff - c->clip_in() + c->timeline_in();
long key_eval = key_time;
if (panel_timeline->snap_to_point(olive::ActiveSequence->playhead, &key_eval)) {