summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-sheet/cellformat.h
blob: b569b7f46416451dd0500175feb0d5367eb99abf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/***************************************************************************
 *                                                                         *
 *   This program 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 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

/*
 * Opie Sheet (formerly Sheet/Qt)
 * by Serdar Ozler <sozler@sitebest.com>
 */

#ifndef CELLFORMAT_H
#define CELLFORMAT_H

#include <qpe/fontdatabase.h>
#include <qdialog.h>
#include <qtabwidget.h>
#include <qlayout.h>
#include <qcombobox.h>
#include <qcheckbox.h>
#include <qpushbutton.h>

#include "sheet.h"

class BorderEditor: public QFrame
{
  Q_OBJECT

  // QT objects
  QPen penTop, penBottom, penLeft, penRight, penHorz, penVert;

  // Private functions
  void drawContents(QPainter *p);

  // Reimplemented QFrame functions
  void mouseReleaseEvent(QMouseEvent *e);

  public:
    // Definitions
    enum BorderArea {None, Top, Bottom, Left, Right, Horz, Vert};

    BorderEditor(QWidget *parent=0);
    ~BorderEditor();

    void setPen(const QPen &pen, BorderArea area);
    QPen getPen(BorderArea area);
    QPen getDefaultPen()                      { return QPen(Qt::black, 1, Qt::DotLine); }

  signals:
    void clicked(BorderEditor::BorderArea);
};

class CellFormat: public QDialog
{
  Q_OBJECT

  enum comboType {COMBO_OTHER, COMBO_WIDTH, COMBO_FONT, COMBO_SIZE, COMBO_STYLE, COMBO_COLOR, COMBO_VALIGN, COMBO_HALIGN};

  // QT objects
  QBoxLayout *box;
  QTabWidget *tabs;
  QWidget *widgetBorders, *widgetBackground, *widgetFont, *widgetAlignment;
  QComboBox *comboBordersWidth, *comboBordersColor, *comboBackgroundColor, *comboBackgroundStyle, *comboFontColor, *comboFontSize, *comboFontFamily, *comboAlignmentVertical, *comboAlignmentHorizontal;
  QCheckBox *checkFontBold, *checkFontItalic, *checkAlignmentWrap;
  QPushButton *buttonBordersDefaults, *buttonBackgroundDefaults, *buttonFontDefaults, *buttonAlignmentDefaults;
  QFrame *frameBackground, *frameFont, *frameAlignment;
  QBrush brushBackground;
  QFont fontFont;
  QColor fontColor;
  Qt::AlignmentFlags textAlignment;
  FontDatabase fontDB;

  // Other objects & variables
  Sheet *sheet;
  BorderEditor *borderEditor;
  bool changedFont, changedAlign, changedBrush;

  // Private functions
  void createWidthCombo(QComboBox *combo);
  void createFontCombo(QComboBox *combo);
  void createHAlignCombo(QComboBox *combo);
  void createVAlignCombo(QComboBox *combo);
  void createStyleCombo(QComboBox *combo);
  void createSizeCombo(QComboBox *combo);
  void createColorCombo(QComboBox *combo);
  QComboBox *createCombo(comboType type, QWidget *parent, const QString &caption, int y);

  int findHAlignIndex(Qt::AlignmentFlags flag);
  int findVAlignIndex(Qt::AlignmentFlags flag);
  int findComboItemIndex(QComboBox *combo, const QString &item);
  int findColorIndex(const QColor &color);
  int findBrushStyleIndex(Qt::BrushStyle style);

  private slots:
    void borderClicked(BorderEditor::BorderArea area);
    void backgroundClicked(int index);
    void fontClicked(bool on);
    void fontClicked(int index);
    void alignClicked(bool on);
    void alignClicked(int index);
    void slotBordersDefaults();
    void slotBackgroundDefaults();
    void slotFontDefaults();
    void slotAlignmentDefaults();

  public:
    CellFormat(QWidget *parent=0);
    ~CellFormat();

    int exec(Sheet *s);

    void setTextAlign(Qt::AlignmentFlags flags);
    void setTextFont(const QFont &font, const QColor &color);
    void setBrushBackground(const QBrush &brush);
};

#endif