File: vsfmanager.h

package info (click to toggle)
portabase 2.0%2Bgit20110117-1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 6,692 kB
  • sloc: cpp: 32,047; sh: 2,675; ansic: 2,320; makefile: 343; xml: 20; python: 16; asm: 10
file content (75 lines) | stat: -rw-r--r-- 2,349 bytes parent folder | download | duplicates (2)
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
/*
 * vsfmanager.h
 *
 * (c) 2010 by Jeremy Bowman <jmbowman@alum.mit.edu>
 *
 * 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.
 */

/** @file vsfmanager.h
 * Header file for VSFManager
 */

#ifndef VSFMANAGER_H
#define VSFMANAGER_H

#include <QList>
#include "pbdialog.h"

class Database;
class PortaBase;
class QAbstractButton;
class QLabel;

/**
 * Dialog for managing the current View, Sorting, or Filter selection (hence
 * "VSF").  Launched by a toolbar button, this dialog contains button to edit
 * or delete the current item, add a new item, or select an existing item.
 */
class VSFManager: public PBDialog
{
    Q_OBJECT
public:
    /** Enumeration of dialog subject types */
    enum Subject {
        View = 0,
        Sorting = 1,
        Filter = 2
    };

    VSFManager(PortaBase *parent = 0);

    void setSubject(Database *database, Subject s);
    void setActions(QAction *add, QAction *edit, QAction *del);
    void setOptions(const QString &current, const QStringList &all);

private:
    void updateButtonList(const QStringList &items, const QString &current);
    QString displayedName(const QString &name, bool *specialCase);

private slots:
    void addItem();
    void editItem();
    void deleteItem();
    void selectItem();

private:
    PortaBase *portabase; /**< The main application window */
    Database *db; /**< The database in use */
    Subject subject; /**< The type of item being managed */
    QAction *addAction; /**< The action to add a new item */
    QAction *editAction; /**< The action to edit the current item */
    QAction *deleteAction; /**< The action to delete the current item */
    QVBoxLayout *layout; /**< The layout containing the button list */
    QLabel *currentLabel; /**< The "Current..." text label */
    QAbstractButton *editButton; /**< The edit item button */
    QAbstractButton *deleteButton; /**< The delete item button */
    QPushButton *addButton; /**< The add item button */
    QList<QPushButton*> buttonList; /**< The buttons for selecting existing items */
    QRegExp nameFilter; /**< Regular expression for filtering out special cases */
};

#endif // VSFMANAGER_H