1/*
2 * Copyright 2017 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Brian Hill
7 */
8#ifndef REPOSITORIES_VIEW_H
9#define REPOSITORIES_VIEW_H
10
11
12#include <ColumnListView.h>
13#include <GroupView.h>
14#include <String.h>
15#include <StringView.h>
16#include <View.h>
17
18#include "RepositoriesSettings.h"
19#include "RepoRow.h"
20#include "TaskLooper.h"
21
22
23class RepositoriesListView : public BColumnListView {
24public:
25							RepositoriesListView(const char* name);
26	virtual void			KeyDown(const char* bytes, int32 numBytes);
27};
28
29
30class RepositoriesView : public BGroupView {
31public:
32							RepositoriesView();
33							~RepositoriesView();
34	virtual void			AllAttached();
35	virtual void			AttachedToWindow();
36	virtual void			MessageReceived(BMessage*);
37	void					AddManualRepository(BString url);
38	bool					IsTaskRunning() { return fRunningTaskCount > 0; }
39
40private:
41	// Message helpers
42	void					_AddSelectedRowsToQueue();
43	void					_TaskStarted(RepoRow* rowItem, int16 count);
44	void					_TaskCompleted(RepoRow* rowItem, int16 count,
45								BString& newName);
46	void					_TaskCanceled(RepoRow* rowItem, int16 count);
47	void					_ShowCompletedStatusIfDone();
48	void					_UpdateFromRepoConfig(RepoRow* rowItem);
49
50	// GUI functions
51	status_t				_EmptyList();
52	void					_InitList();
53	void					_RefreshList();
54	void					_UpdateListFromRoster();
55	void					_SaveList();
56	RepoRow*				_AddRepo(BString name, BString url, bool enabled);
57	void					_FindSiblings();
58	void					_UpdateButtons();
59	void					_UpdateStatusView();
60
61	RepositoriesSettings	fSettings;
62	RepositoriesListView*	fListView;
63	BView*					fStatusContainerView;
64	BStringView*			fListStatusView;
65	TaskLooper*				fTaskLooper;
66	bool					fShowCompletedStatus;
67	int						fRunningTaskCount, fLastCompletedTimerId;
68	BButton*				fAddButton;
69	BButton*				fRemoveButton;
70	BButton*				fEnableButton;
71	BButton*				fDisableButton;
72};
73
74
75#endif
76