mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-04-15 05:32:21 +00:00
New sidebar splitter on Analysis and Diary
This commit is contained in:
@@ -27,7 +27,6 @@ GcCalendar::GcCalendar(MainWindow *main) : main(main)
|
||||
setContentsMargins(0,0,0,0);
|
||||
setAutoFillBackground(true);
|
||||
|
||||
setStyleSheet("QLabel { color: gray; }");
|
||||
month = year = 0;
|
||||
_ride = NULL;
|
||||
|
||||
@@ -36,28 +35,32 @@ GcCalendar::GcCalendar(MainWindow *main) : main(main)
|
||||
mainLayout->setSpacing(0);
|
||||
|
||||
// Splitter - cal at top, summary at bottom
|
||||
splitter = new QSplitter(this);
|
||||
splitter->setHandleWidth(1);
|
||||
splitter->setOrientation(Qt::Vertical);
|
||||
splitter->setFrameStyle(QFrame::NoFrame);
|
||||
|
||||
splitter = new GcSplitter(Qt::Vertical);
|
||||
mainLayout->addWidget(splitter);
|
||||
connect(splitter,SIGNAL(splitterMoved(int,int)), this, SLOT(splitterMoved(int,int)));
|
||||
|
||||
// calendar
|
||||
calendarItem = new GcSplitterItem(tr("Calendar"), QIcon(QPixmap(":images/sidebar/calendar.png")), this);
|
||||
summaryItem = new GcSplitterItem(tr("Summary"), QIcon(QPixmap(":images/sidebar/dashboard.png")), this);
|
||||
|
||||
// cal widget
|
||||
QWidget *cal = new QWidget(this);
|
||||
cal->setContentsMargins(20,10,20,20);
|
||||
cal->setContentsMargins(10,5,10,10);
|
||||
cal->setStyleSheet("QLabel { color: gray; }");
|
||||
layout = new QVBoxLayout(cal);
|
||||
layout->setSpacing(0);
|
||||
layout->setContentsMargins(0,0,0,0);
|
||||
splitter->addWidget(cal);
|
||||
calendarItem->addWidget(cal);
|
||||
|
||||
// summary widget
|
||||
QWidget *sum = new QWidget(this);
|
||||
sum->setContentsMargins(0,0,0,0);
|
||||
QVBoxLayout *slayout = new QVBoxLayout(sum);
|
||||
slayout->setSpacing(0);
|
||||
splitter->addWidget(sum);
|
||||
summaryItem->addWidget(sum);
|
||||
|
||||
splitter->addWidget(calendarItem);
|
||||
splitter->addWidget(summaryItem);
|
||||
|
||||
black.setColor(QPalette::WindowText, Qt::gray);
|
||||
white.setColor(QPalette::WindowText, Qt::white);
|
||||
@@ -274,11 +277,6 @@ GcCalendar::GcCalendar(MainWindow *main) : main(main)
|
||||
if (splitterSizes != QVariant()) {
|
||||
splitter->restoreState(splitterSizes.toByteArray());
|
||||
splitter->setOpaqueResize(true); // redraw when released, snappier UI
|
||||
} else {
|
||||
QList<int> sizes;
|
||||
sizes.append(400);
|
||||
sizes.append(400);
|
||||
splitter->setSizes(sizes);
|
||||
}
|
||||
|
||||
// summary mode changed
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#include "RideItem.h"
|
||||
#include "RideNavigator.h"
|
||||
|
||||
#include "GcSideBarItem.h"
|
||||
|
||||
// Catch signal, no background and do embossed text
|
||||
class GcLabel : public QLabel
|
||||
{
|
||||
@@ -113,7 +115,9 @@ class GcCalendar : public QWidget // not a GcWindow - belongs on sidebar
|
||||
QList<FieldDefinition> fieldDefinitions;
|
||||
GcCalendarModel *calendarModel;
|
||||
|
||||
QSplitter *splitter; // calendar vs summary
|
||||
GcSplitter *splitter; // calendar vs summary
|
||||
GcSplitterItem *calendarItem,
|
||||
*summaryItem;
|
||||
|
||||
QComboBox *summarySelect;
|
||||
QWebView *summary;
|
||||
|
||||
@@ -93,6 +93,9 @@ GcSplitter::insertWidget(int index, QWidget *widget)
|
||||
GcSubSplitter::GcSubSplitter(Qt::Orientation orientation, GcSplitterControl *control, QWidget *parent) : QSplitter(orientation, parent), control(control)
|
||||
{
|
||||
_insertedWidget = NULL;
|
||||
|
||||
// we add a fake widget to ensure the first real widget
|
||||
// that is added has a handle (even though it cannot be moved)
|
||||
QLabel *fake = new QLabel("fake");
|
||||
fake->setFixedHeight(0);
|
||||
setHandleWidth(0);
|
||||
@@ -317,7 +320,7 @@ void
|
||||
GcSplitterItem::addWidget(QWidget *p)
|
||||
{
|
||||
content = p;
|
||||
p->setContentsMargins(0,0,0,0);
|
||||
//p->setContentsMargins(0,0,0,0);
|
||||
layout->addWidget(p);
|
||||
}
|
||||
|
||||
|
||||
@@ -173,7 +173,6 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
|
||||
// need to restore geometry before setUnifiedToolBar.. on Mac
|
||||
appsettings->setValue(GC_SETTINGS_LAST, home.dirName());
|
||||
QVariant geom = appsettings->value(this, GC_SETTINGS_MAIN_GEOM);
|
||||
@@ -643,21 +642,25 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
intervalSplitter = new QSplitter(this);
|
||||
intervalSplitter->setHandleWidth(1);
|
||||
intervalSplitter->setOrientation(Qt::Vertical);
|
||||
intervalSplitter->addWidget(activityHistory);
|
||||
intervalSplitter->addWidget(intervalWidget);
|
||||
intervalSplitter->addWidget(intervalSummaryWindow);
|
||||
intervalSplitter->setFrameStyle(QFrame::NoFrame);
|
||||
intervalSplitter->setCollapsible(0, false);
|
||||
intervalSplitter->setCollapsible(1, false);
|
||||
|
||||
QVariant intervalSplitterSizes = appsettings->cvalue(cyclist, GC_SETTINGS_INTERVALSPLITTER_SIZES);
|
||||
if (intervalSplitterSizes != QVariant()) {
|
||||
intervalSplitter->restoreState(intervalSplitterSizes.toByteArray());
|
||||
intervalSplitter->setOpaqueResize(true); // redraw when released, snappier UI
|
||||
} else {
|
||||
QList<int> sizes;
|
||||
sizes.append(400);
|
||||
sizes.append(200);
|
||||
sizes.append(200);
|
||||
intervalSplitter->setSizes(sizes);
|
||||
analItem = new GcSplitterItem(tr("Activities"), QIcon(QPixmap(":images/sidebar/folder.png")), this);
|
||||
analItem->addWidget(activityHistory);
|
||||
intervalItem = new GcSplitterItem(tr("Intervals"), QIcon(QPixmap(":images/mac/stop.png")), this);
|
||||
intervalItem->addWidget(intervalSplitter);
|
||||
|
||||
analSidebar = new GcSplitter(Qt::Vertical);
|
||||
analSidebar->addWidget(analItem);
|
||||
analSidebar->addWidget(intervalItem);
|
||||
|
||||
QVariant analSplitterSizes = appsettings->cvalue(cyclist, GC_SETTINGS_INTERVALSPLITTER_SIZES);
|
||||
if (analSplitterSizes != QVariant()) {
|
||||
analSidebar->restoreState(analSplitterSizes.toByteArray());
|
||||
analSidebar->setOpaqueResize(true); // redraw when released, snappier UI
|
||||
}
|
||||
|
||||
QTreeWidgetItem *last = NULL;
|
||||
@@ -756,7 +759,7 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
connect(ltmSidebar, SIGNAL(dateRangeChanged(DateRange)), this, SLOT(dateRangeChangedLTM(DateRange)));
|
||||
ltmSidebar->dateRangeTreeWidgetSelectionChanged(); // force an update to get first date range shown
|
||||
|
||||
toolBox->addWidget(intervalSplitter);
|
||||
toolBox->addWidget(analSidebar);
|
||||
toolBox->addWidget(gcCalendar);
|
||||
toolBox->addWidget(trainTool->controls());
|
||||
toolBox->addWidget(ltmSidebar);
|
||||
@@ -984,7 +987,7 @@ MainWindow::MainWindow(const QDir &home) :
|
||||
connect(intervalWidget,SIGNAL(itemSelectionChanged()), this, SLOT(intervalTreeWidgetSelectionChanged()));
|
||||
connect(intervalWidget,SIGNAL(itemChanged(QTreeWidgetItem *,int)), this, SLOT(intervalEdited(QTreeWidgetItem*, int)));
|
||||
connect(splitter,SIGNAL(splitterMoved(int,int)), this, SLOT(splitterMoved(int,int)));
|
||||
connect(intervalSplitter,SIGNAL(splitterMoved(int,int)), this, SLOT(intervalSplitterMoved(int,int)));
|
||||
connect(analSidebar,SIGNAL(splitterMoved(int,int)), this, SLOT(analSidebarMoved(int,int)));
|
||||
|
||||
connect(this, SIGNAL(rideDirty()), this, SLOT(enableSaveButton()));
|
||||
connect(this, SIGNAL(rideClean()), this, SLOT(enableSaveButton()));
|
||||
@@ -1359,9 +1362,9 @@ MainWindow::resizeEvent(QResizeEvent*)
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::intervalSplitterMoved(int /* pos */, int /*index*/)
|
||||
MainWindow::analSidebarMoved(int /* pos */, int /*index*/)
|
||||
{
|
||||
appsettings->setCValue(cyclist, GC_SETTINGS_INTERVALSPLITTER_SIZES, intervalSplitter->saveState());
|
||||
appsettings->setCValue(cyclist, GC_SETTINGS_INTERVALSPLITTER_SIZES, analSidebar->saveState());
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -74,6 +74,8 @@ class BlankStateAnalysisPage;
|
||||
class BlankStateHomePage;
|
||||
class BlankStateDiaryPage;
|
||||
class BlankStateTrainPage;
|
||||
class GcSplitter;
|
||||
class GcSplitterItem;
|
||||
|
||||
extern QList<MainWindow *> mainwindows; // keep track of all the MainWindows we have open
|
||||
extern QDesktopWidget *desktop; // how many screens / res etc
|
||||
@@ -275,7 +277,7 @@ class MainWindow : public QMainWindow
|
||||
void rideTreeWidgetSelectionChanged();
|
||||
void intervalTreeWidgetSelectionChanged();
|
||||
void splitterMoved(int, int);
|
||||
void intervalSplitterMoved(int, int);
|
||||
void analSidebarMoved(int, int);
|
||||
void newCyclist();
|
||||
void openCyclist();
|
||||
void downloadRide();
|
||||
@@ -428,6 +430,11 @@ class MainWindow : public QMainWindow
|
||||
QSplitter *splitter;
|
||||
QSplitter *metaSplitter;
|
||||
QTreeWidget *treeWidget;
|
||||
|
||||
// sidebar splitter
|
||||
GcSplitter *analSidebar;
|
||||
GcSplitterItem *analItem, *intervalItem;
|
||||
|
||||
QSplitter *intervalSplitter;
|
||||
IntervalTreeView *intervalWidget;
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
#define GC_SETTINGS_MAIN_X "mainwindow/x"
|
||||
#define GC_SETTINGS_MAIN_Y "mainwindow/y"
|
||||
#define GC_SETTINGS_MAIN_GEOM "mainwindow/geometry"
|
||||
#define GC_SETTINGS_CALSPLITTER_SIZES "mainwindow/calsplitterSizes"
|
||||
#define GC_SETTINGS_CALSPLITTER_SIZES "mainwindow/calSideBarSizes"
|
||||
#define GC_SETTINGS_LTMSPLITTER_SIZES "mainwindow/ltmSideBarSizes"
|
||||
#define GC_SETTINGS_INTERVALSPLITTER_SIZES "mainwindow/intervalsplitterSizes"
|
||||
#define GC_SETTINGS_INTERVALSPLITTER_SIZES "mainwindow/analSideBarSizes"
|
||||
#define GC_SETTINGS_SPLITTER_SIZES "mainwindow/splitterSizes"
|
||||
#define GC_SETTINGS_SUMMARYSPLITTER_SIZES "mainwindow/summarysplittersizes"
|
||||
#define GC_SETTINGS_CALENDAR_SIZES "mainwindow/calendarSizes"
|
||||
|
||||
Reference in New Issue
Block a user