New sidebar splitter on Analysis and Diary

This commit is contained in:
Mark Liversedge
2013-02-27 16:03:56 +00:00
parent f56538d8b7
commit b3cfa84add
6 changed files with 50 additions and 35 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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"