~libertine-team/libertine/trunk

« back to all changes in this revision

Viewing changes to libertine/ContainerManager.h

  • Committer: Bileto Bot
  • Date: 2016-06-07 12:44:02 UTC
  • mfrom: (129.1.2 libertine.release-1.1)
  • Revision ID: ci-train-bot@canonical.com-20160607124402-mq9wqlm0s6yoin90
* Set up a new proxy socket for the maliit server.
* Remove the demo icons and desktop files and deprecate libertine-demo.
  (LP: #1575315)
* Explicitly create .config/dconf and the common XDG data directories in the
  user container's mapped home directory in order to make sure the file
  permissions are correct. (LP: #1570961) (LP: #1581131)
* Bump version to 1.1.
* Make it possible for the user to interact with debconf prompts from apt-get.
  (LP: #1518814)
* Refactor ContainerManagerWorker to use the async QProcess API.
* Reap children processes when closing GUI and attempt to recover as necessary.
* Implement bash auto-completion for libertine-container-manager.
  (LP: #1580610)

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#include <QtCore/QString>
24
24
#include <QtCore/QStringList>
25
25
#include <QtCore/QThread>
 
26
#include <QtCore/QProcess>
26
27
 
27
28
class ContainerManagerWorker
28
 
: public QThread
 
29
: public QObject
29
30
{
30
31
  Q_OBJECT
31
 
  Q_ENUMS(ContainerAction)
32
 
  Q_PROPERTY(ContainerAction containerAction READ container_action WRITE container_action NOTIFY containerActionChanged)
33
 
  Q_PROPERTY(QString containerId READ container_id WRITE container_id NOTIFY containerIdChanged)
34
 
  Q_PROPERTY(QString containerType READ container_type WRITE container_type NOTIFY containerTypeChanged)
35
 
  Q_PROPERTY(QString containerDistro READ container_distro WRITE container_distro NOTIFY containerDistroChanged)
36
 
  Q_PROPERTY(QString containerName READ container_name WRITE container_name NOTIFY containerNameChanged)
37
 
  Q_PROPERTY(bool containerMultiarch READ container_multiarch WRITE container_multiarch)
38
 
  Q_PROPERTY(QString data READ data WRITE data NOTIFY dataChanged)
39
 
  Q_PROPERTY(QStringList data_list READ data_list WRITE data_list NOTIFY dataListChanged) 
40
 
 
41
 
public:
42
 
  static const QString libertine_container_manager_tool;
43
 
 
44
 
  enum class ContainerAction
45
 
  : int
46
 
  {
47
 
    Create,
48
 
    Destroy,
49
 
    Install,
50
 
    Remove,
51
 
    Search,
52
 
    Update,
53
 
    Exec,
54
 
    Configure
55
 
  };
56
 
 
57
 
public:
58
 
  ContainerManagerWorker();
59
 
  ContainerManagerWorker(ContainerAction container_action,
60
 
                         QString const& container_id,
61
 
                         QString const& container_type);
62
 
  ContainerManagerWorker(ContainerAction container_action,
63
 
                         QString const& container_id,
64
 
                         QString const& container_type,
65
 
                         QString const& data);
66
 
  ContainerManagerWorker(ContainerAction container_action,
67
 
                         QString const& container_id,
68
 
                         QString const& container_type,
69
 
                         QStringList data_list);
70
 
  ~ContainerManagerWorker();
71
 
 
72
 
  ContainerAction
73
 
  container_action() const;
74
 
 
75
 
  void
76
 
  container_action(ContainerAction container_action);
77
 
 
78
 
  QString const&
79
 
  container_id() const;
80
 
 
81
 
  void
82
 
  container_id(QString const& container_id);
83
 
 
84
 
  QString const&
85
 
  container_type() const;
86
 
 
87
 
  void
88
 
  container_type(QString const& container_type);
89
 
 
90
 
  QString const&
91
 
  container_distro() const;
92
 
 
93
 
  void
94
 
  container_distro(QString const& container_distro);
95
 
 
96
 
  QString const&
97
 
  container_name() const;
98
 
 
99
 
  void
100
 
  container_name(QString const& container_name);
101
 
 
102
 
  bool
103
 
  container_multiarch();
104
 
 
105
 
  void
106
 
  container_multiarch(bool container_multiarch);
107
 
 
108
 
  QString const&
109
 
  data() const;
110
 
 
111
 
  void
112
 
  data(QString const& data);
113
 
 
114
 
  QStringList
115
 
  data_list();
116
 
 
117
 
  void
118
 
  data_list(QStringList data_list);
119
 
 
120
 
protected:
121
 
  void run() Q_DECL_OVERRIDE;
122
 
 
123
 
private:
124
 
  void createContainer(QString const& password);
125
 
  void destroyContainer();
126
 
  void installPackage(QString const& package_name);
127
 
  void removePackage(QString const& package_name);
128
 
  void searchPackageCache(QString const& search_string);
129
 
  void updateContainer();
130
 
  void runCommand(QString const& command_line);
131
 
  void configureContainer(QStringList configure_command);
132
 
 
133
 
private:
134
 
  ContainerAction container_action_;
135
 
  QString container_id_;
136
 
  QString container_type_;
137
 
  QString container_distro_;
138
 
  QString container_name_;
139
 
  bool container_multiarch_;
140
 
  QString data_;
141
 
  QStringList data_list_;
 
32
 
 
33
public:
 
34
  explicit ContainerManagerWorker();
 
35
  virtual ~ContainerManagerWorker();
 
36
 
 
37
  Q_INVOKABLE void createContainer(const QString& id, const QString& name, const QString& distro, bool multiarch, const QString& password);
 
38
  Q_INVOKABLE void destroyContainer(const QString& id);
 
39
  Q_INVOKABLE void installPackage(const QString& id, const QString& package_name);
 
40
  Q_INVOKABLE void removePackage(const QString& container_id, const QString& package_name);
 
41
  Q_INVOKABLE void searchPackageCache(const QString& container_id, const QString& search_string);
 
42
  Q_INVOKABLE void updateContainer(const QString& container_id, const QString& container_name);
 
43
  Q_INVOKABLE void runCommand(const QString& container_id, const QString& container_name, const QString& command_line);
 
44
  Q_INVOKABLE void configureContainer(const QString& container_id, const QString& container_name, const QStringList& configure_command);
 
45
  Q_INVOKABLE void fixIntegrity();
 
46
 
 
47
public slots:
 
48
  void packageOperationInteraction(const QString& input);
 
49
 
 
50
private:
 
51
  QProcess process_;
 
52
  QString process_output_;
142
53
 
143
54
signals:
144
55
  void containerActionChanged();
154
65
  void finishedSearch(QList<QString> packageList);
155
66
  void finishedCommand(QString const& command_output);
156
67
  void finishedConfigure();
 
68
  void updatePackageOperationDetails(const QString& container_id, const QString& package_name, const QString& details);
 
69
  void packageOperationFinished(const QString& container_id, const QString& package_name);
157
70
 
158
71
  void error(const QString& short_description, const QString& details);
159
72
};