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