/* -*- C++ -*- */ #ifndef TESTUI_APP_H #define TESTUI_APP_H #include #include #include #include #include #include #include #include #include #include #include class TQVBox; class TQWidgetStack; class TQSplitter; class TDEAction; class KPushButton; class TDEProcess; namespace adept { class AcqProgressWidget; } using namespace aptFront; using namespace adept; struct GroupPolicy : cache::component::Desktop::GroupPolicy { virtual std::string groupForCategories( utils::Range< std::string > ); }; struct IconPolicy : GroupedDesktopSelector::IconPolicy { virtual TQString iconForGroup( TQString ); }; class App : public TDEMainWindow, Application { Q_OBJECT public: enum State { Select, Preview, Inspect, Commit }; void setupActions(); ExtTerminalInterface *terminal(); App(); // check if the changes in cache are consistent with what is // checked in the tree and we don't have any suspicious removals // or other artifacts (broken packages) bool consistent(); protected slots: void start(); void commit(); void inspect(); void delayed(); void undo() { Application::undo(); } void redo() { Application::redo(); } void checkpoint() { Application::checkpoint(); } void setHistoryEnabled( bool ); void disableNext(); void disableButtons(); void setNext( TQString str, const char *slot ); void togglePreview(); void editSources(); void request( cache::entity::Package, cache::component::State::Action ); bool confirmRequest( entity::Package, component::State::Action ); void requestOk() { m_currentRequestOk = true; } protected: friend class WaitForLister; void setState( State s ) { m_lastState = m_state; m_state = s; } virtual void notifyPreRebuild( cache::component::Base * ); virtual void notifyPostChange( cache::component::Base * ); virtual void notifyPreChange( cache::component::Base * ); TQWidgetStack *m_stack; TQVBox *m_all; TQHBox *m_buttons; TQLabel *m_bye, *m_loading; KPushButton *m_next, *m_quit; KPushButton *m_editSources, *m_reviewChanges; // stacked widgets adept::AcqProgressWidget *m_progress; adept::CommitProgress *m_commitProgress; // adept::GroupedDesktopSelector *m_desktopSelector; adept::InstallerView *m_view; adept::Browser *m_preview; // other stuff std::vector m_actions; TQMap< TQString, TQString > m_icons; TDEAction *m_undo, *m_redo; TDEToggleAction *m_previewAction; State m_state, m_lastState; typedef std::list< component::State::Request > RequestList; RequestList m_requests; // XXX hack bool m_currentRequestOk; }; class WaitForLister : public TQObject { Q_OBJECT public: WaitForLister( App *a, const char *s ) : app( a ), slot( s ) { waiting(); } protected slots: void waiting(); protected: App *app; const char *slot; }; #endif