15.1.358. tablet_qt/menulib/menuheader.h¶
/*
Copyright (C) 2012, University of Cambridge, Department of Psychiatry.
Created by Rudolf Cardinal (rnc1001@cam.ac.uk).
This file is part of CamCOPS.
CamCOPS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
CamCOPS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with CamCOPS. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include <QPointer>
#include <QWidget>
#include "core/camcopsapp.h" // for LockState
class BaseWidget;
class ClickableLabelWordWrapWide;
class LabelWordWrapWide;
class QAbstractButton;
class QLabel;
class QPushButton;
// A widget for the top part of a CamCOPS menu (with title and control
// buttons).
class MenuHeader : public QWidget // breaks as BaseWidget
{
Q_OBJECT
public:
MenuHeader(
QWidget* parent,
CamcopsApp& app,
bool top,
const QString& title,
const QString& icon_filename = "",
bool debug_allowed = false
);
// Set the title.
void setTitle(const QString& title);
// Set the icon.
// The parameter is a CamCOPS icon filename stub.
void setIcon(const QString& icon_filename);
// Set the menu header colour for a task menu where that task is crippled.
void setCrippled(bool crippled);
signals:
// Back button clicked.
void backClicked();
// "View" action button clicked.
void viewClicked();
// "Edit" action button clicked.
void editClicked();
// "Delete" action button clicked.
void deleteClicked();
// "Add" action button clicked.
void addClicked();
// "Please display a debug dump of this menu's layout."
void debugLayout();
// "Finish" flag clicked.
void finishFlagClicked();
public slots:
// Should the header offer the "view" button?
void offerView(bool offer_view = false);
// Should the header offer the "edit"/"delete" buttons?
void offerEditDelete(bool offer_edit = false, bool offer_delete = false);
// Should the header offer the "add" button?
void offerAdd(bool offer_add = false);
// Should the header offer the "finish" flag?
void offerFinishFlag(bool offer_finish_flag = false);
// "The application's lock state has changed."
void lockStateChanged(CamcopsApp::LockState lockstate);
// "The application's need-to-upload state has changed."
void needsUploadChanged(bool needs_upload);
// "The application's selected patient has changed."
void selectedPatientChanged(const Patient* patient);
// "The details of the selected patient have changed."
void selectedPatientDetailsChanged(const Patient* patient);
protected:
// Internal version of setIcon().
void setIcon(const QString& icon_filename, bool call_show_or_hide);
// "Update the lines (at the bottom of the header) showing patient info."
void setPatientDetails(const Patient* patient);
private:
void openOptionsMenu();
void registerPatient();
protected:
CamcopsApp& m_app;
QPointer<BaseWidget> m_top_bar;
QPointer<LabelWordWrapWide> m_title_label;
QPointer<QLabel> m_icon;
QPointer<QAbstractButton> m_button_needs_upload;
QPointer<QPushButton> m_button_debug;
QPointer<QAbstractButton> m_button_finish_flag;
QPointer<QAbstractButton> m_button_view;
QPointer<QAbstractButton> m_button_edit;
QPointer<QAbstractButton> m_button_delete;
QPointer<QAbstractButton> m_button_add;
QPointer<QAbstractButton> m_button_locked;
QPointer<QAbstractButton> m_button_unlocked;
QPointer<QAbstractButton> m_button_privileged;
QPointer<QLabel> m_mode;
QPointer<QLabel> m_patient_info;
QPointer<ClickableLabelWordWrapWide> m_no_patient;
QPointer<ClickableLabelWordWrapWide> m_single_user_options;
};