11553Srgrimes/*
21553Srgrimes * Copyright 2015 Haiku, Inc. All rights reserved.
31553Srgrimes * Distributed under the terms of the MIT License.
41553Srgrimes *
51553Srgrimes * Authors:
61553Srgrimes *		Axel D��rfler, <axeld@pinc-software.de>
71553Srgrimes */
81553Srgrimes
91553Srgrimes
101553Srgrimes#include <Catalog.h>
111553Srgrimes#include <NetworkSettings.h>
121553Srgrimes#include <NetworkSettingsAddOn.h>
13121300Sphk
141553Srgrimes#include "ServiceListItem.h"
151553Srgrimes#include "ServiceView.h"
161553Srgrimes
171553Srgrimes
181553Srgrimesusing namespace BNetworkKit;
191553Srgrimes
201553Srgrimes
211553Srgrimes#undef B_TRANSLATION_CONTEXT
221553Srgrimes#define B_TRANSLATION_CONTEXT "FTPServiceAddOn"
231553Srgrimes
241553Srgrimes
251553Srgrimesclass FTPServiceAddOn : public BNetworkSettingsAddOn {
261553Srgrimespublic:
271553Srgrimes								FTPServiceAddOn(image_id image,
281553Srgrimes									BNetworkSettings& settings);
291553Srgrimes	virtual						~FTPServiceAddOn();
30114601Sobrien
311553Srgrimes	virtual	BNetworkSettingsItem*
321553Srgrimes								CreateNextItem(uint32& cookie);
33114601Sobrien};
3430027Scharnier
35114601Sobrien
36114601Sobrienclass FTPServiceItem : public BNetworkSettingsItem {
371553Srgrimespublic:
381553Srgrimes								FTPServiceItem(BNetworkSettings& settings);
391553Srgrimes	virtual						~FTPServiceItem();
4030027Scharnier
4130027Scharnier	virtual	BNetworkSettingsType
4230027Scharnier								Type() const;
431553Srgrimes
441553Srgrimes	virtual BListItem*			ListItem();
451553Srgrimes	virtual BView*				View();
4644303Swollman
4730027Scharnier	virtual	status_t			Revert();
4844303Swollman	virtual bool				IsRevertable();
4944303Swollman
5044303Swollman	virtual void				SettingsUpdated(uint32 which);
5144303Swollman
5244303Swollmanprivate:
5344303Swollman			BNetworkSettings&	fSettings;
5444303Swollman			BListItem*			fItem;
551553Srgrimes			ServiceView*		fView;
56100070Sdes};
5730027Scharnier
5830027Scharnier
591553Srgrimes// #pragma mark -
6042561Sjkoshy
611553Srgrimes
621553SrgrimesFTPServiceItem::FTPServiceItem(BNetworkSettings& settings)
631553Srgrimes	:
641553Srgrimes	fSettings(settings),
651553Srgrimes	fItem(new ServiceListItem("ftp", B_TRANSLATE("FTP server"), settings)),
661553Srgrimes	fView(NULL)
671553Srgrimes{
681553Srgrimes}
691553Srgrimes
7066584Sphk
711553SrgrimesFTPServiceItem::~FTPServiceItem()
72103726Swollman{
7399800Salfred	if (fView->Parent() == NULL)
7499800Salfred		delete fView;
7599800Salfred
761553Srgrimes	delete fItem;
771553Srgrimes}
78121299Sphk
791553Srgrimes
80121299SphkBNetworkSettingsType
81121299SphkFTPServiceItem::Type() const
8299802Salfred{
831553Srgrimes	return B_NETWORK_SETTINGS_TYPE_SERVICE;
8499802Salfred}
852860Srgrimes
861553Srgrimes
87124265SphkBListItem*
88124265SphkFTPServiceItem::ListItem()
89124265Sphk{
90124265Sphk	return fItem;
91124265Sphk}
92124265Sphk
93124265Sphk
94124265SphkBView*
95124265SphkFTPServiceItem::View()
96124265Sphk{
971553Srgrimes	if (fView == NULL) {
9899802Salfred		fView = new ServiceView("ftp", "ftpd", B_TRANSLATE("FTP server"),
991553Srgrimes			B_TRANSLATE("The FTP server allows you to remotely access the "
1001553Srgrimes				"files on your machine using the FTP protocol.\n\nPlease note "
101124389Sphk				"that it is an insecure and unencrypted connection."),
1022860Srgrimes				fSettings);
1032860Srgrimes	}
1042860Srgrimes
10560418Swollman	return fView;
10660418Swollman}
10760418Swollman
10860418Swollman
1091553Srgrimesstatus_t
1101553SrgrimesFTPServiceItem::Revert()
1112860Srgrimes{
1122860Srgrimes	return fView != NULL ? fView->Revert() : B_OK;
1132860Srgrimes}
1142860Srgrimes
11554375Sjoe
1162860Srgrimesbool
1171553SrgrimesFTPServiceItem::IsRevertable()
1181553Srgrimes{
1192860Srgrimes	return fView != NULL ? fView->IsRevertable() : false;
1202860Srgrimes}
1212860Srgrimes
1222860Srgrimes
1232860Srgrimesvoid
1241553SrgrimesFTPServiceItem::SettingsUpdated(uint32 which)
1251553Srgrimes{
1261553Srgrimes	if (fView != NULL)
1271553Srgrimes		fView->SettingsUpdated(which);
12830027Scharnier}
1291553Srgrimes
1301553Srgrimes
1311553Srgrimes// #pragma mark -
1322860Srgrimes
1331553Srgrimes
1348857SrgrimesFTPServiceAddOn::FTPServiceAddOn(image_id image,
1351553Srgrimes	BNetworkSettings& settings)
1362860Srgrimes	:
1371553Srgrimes	BNetworkSettingsAddOn(image, settings)
1381553Srgrimes{
139112214Srobert}
1401553Srgrimes
1411553Srgrimes
1421553SrgrimesFTPServiceAddOn::~FTPServiceAddOn()
143121299Sphk{
1441553Srgrimes}
1451553Srgrimes
1461553Srgrimes
147112214SrobertBNetworkSettingsItem*
148112214SrobertFTPServiceAddOn::CreateNextItem(uint32& cookie)
1492860Srgrimes{
15061749Sjoe	if (cookie++ == 0)
15142561Sjkoshy		return new FTPServiceItem(Settings());
1521553Srgrimes
15342561Sjkoshy	return NULL;
15442561Sjkoshy}
15542561Sjkoshy
156121731Sphk
15742561Sjkoshy// #pragma mark -
1582860Srgrimes
15942561Sjkoshy
1601553Srgrimesextern "C"
16142561SjkoshyBNetworkSettingsAddOn*
162121300Sphkinstantiate_network_settings_add_on(image_id image, BNetworkSettings& settings)
16342561Sjkoshy{
1641553Srgrimes	return new FTPServiceAddOn(image, settings);
1652860Srgrimes}
1662860Srgrimes