Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef MainViewH
- #define MainViewH
- #include <System.Classes.hpp>
- #include <Vcl.Controls.hpp>
- #include <Vcl.StdCtrls.hpp>
- #include <Vcl.Forms.hpp>
- #include <Vcl.Edge.hpp>
- #include <WebView2.hpp>
- #include <Winapi.ActiveX.hpp>
- #include <Vcl.TitleBarCtrls.hpp>
- #include <Vcl.ComCtrls.hpp>
- #include <Vcl.ToolWin.hpp>
- #include <Vcl.WinXCtrls.hpp>
- #include <SHDocVw.hpp>
- #include <Vcl.OleCtrls.hpp>
- #include <Vcl.Buttons.hpp>
- #include <Vcl.ExtCtrls.hpp>
- #include <Vcl.Graphics.hpp>
- #include <Vcl.Imaging.pngimage.hpp>
- #include <Vcl.Menus.hpp>
- #include <VCLTee.TeCanvas.hpp>
- #include <System.ImageList.hpp>
- #include <Vcl.ImgList.hpp>
- #include <vector>
- #include <utility>
- #include "PageInfoUnit.h"
- #include "BookmarksReader.h"
- #include "BookmarksWriter.h"
- #include "StringConverter.h"
- #include "SettingsView.h"
- #include "BookmarksManager.h"
- #include "HistoryManager.h"
- #include "AddBookmarkView.h"
- #include "AnonymModeView.h"
- #include "AboutProgramView.h"
- class TWebView : public TForm
- {
- __published:
- TEdit *addressBar;
- TTitleBarPanel *TitleBarPanel1;
- TImage *backBtn;
- TImage *forwardBtn;
- TImage *updateBtn;
- TImage *homeBtn;
- TImage *searchBtn;
- TImage *addBookmarkBtn;
- TImage *settingsBtn;
- TImage *closeBtn;
- TImage *expandBtn;
- TImage *hideBtn;
- TImage *newTabBtn;
- TPageControl *PageControl;
- TImage *showBookmarksBtn;
- TComboBox *bookmarksBox;
- TPopupMenu *tabsPopup;
- TMenuItem *closeChoice;
- TActivityIndicator *activityIndicator;
- TImage *deleteBookmarkBtn;
- TPopupMenu *bookmarksPopup;
- TMenuItem *N1;
- TImage *disactivateAnonymModeBtn;
- TImage *anonymModeIndicatorBtn;
- TImage *activateAnonymModeBtn;
- TImage *aboutProgramBtn;
- TImageList *ImageList;
- TImage *Image2;
- void __fastcall FormCreate(TObject *Sender);
- void __fastcall backBtnClick(TObject *Sender);
- void __fastcall forwardBtnClick(TObject *Sender);
- void __fastcall updateBtnClick(TObject *Sender);
- void __fastcall searchBtnClick(TObject *Sender);
- void __fastcall backBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall backBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall forwardBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall forwardBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall updateBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall updateBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall homeBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall homeBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall addressBarClick(TObject *Sender);
- void __fastcall homeBtnClick(TObject *Sender);
- void __fastcall searchBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall searchBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall settingsBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall settingsBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall closeBtnClick(TObject *Sender);
- void __fastcall closeBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall closeBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall hideBtnClick(TObject *Sender);
- void __fastcall hideBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall hideBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall expandBtnClick(TObject *Sender);
- void __fastcall addressBarMouseLeave(TObject *Sender);
- void __fastcall newTabBtnClick(TObject *Sender);
- void __fastcall PageControlChange(TObject *Sender);
- void __fastcall PageControlMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall showBookmarksBtnClick(TObject *Sender);
- void __fastcall addBookmarkBtnClick(TObject *Sender);
- void __fastcall newTabBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall newTabBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall showBookmarksBtnMouseDown(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y);
- void __fastcall showBookmarksBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y);
- void __fastcall bookmarksBoxSelect(TObject *Sender);
- void __fastcall deleteBookmarkBtnClick(TObject *Sender);
- void __fastcall settingsBtnClick(TObject *Sender);
- void __fastcall closeChoiceClick(TObject *Sender);
- void __fastcall FormKeyPress(TObject *Sender, System::WideChar &Key);
- void __fastcall activateAnonymModeBtnClick(TObject *Sender);
- void __fastcall disactivateAnonymModeBtnClick(TObject *Sender);
- void __fastcall anonymModeIndicatorBtnClick(TObject *Sender);
- void __fastcall PageControlMouseMove(TObject *Sender, TShiftState Shift, int X,
- int Y);
- void __fastcall aboutProgramBtnClick(TObject *Sender);
- private:
- bool isFullScreen = false;
- bool isLoaded = true;
- bool isSelectedBar = false;
- bool isAnonymMode = false;
- int tabId = 0;
- int tabPopupIndex = 0;
- int loadingTab = 0;
- const int ANIMATION_OFFSET = 3;
- const int TAB_POPUP_OFFSET = 75;
- const String NEW_TAB_CAPTION = "Новая вкладка";
- const String SEARCH_URL = "https://www.google.com/search?q=";
- const String TAB_SPACE = " ";
- const String TAB_NAME_PREFIX = "tab";
- const String BROWSER_NAME_POSTFIX = "_browser";
- const std::string SECURE_URL_PREFIX = "https://";
- const std::string URL_PREFIX = "http://";
- const std::string BOOKMARKS_FILENAME = "bookmarks";
- const wchar_t* BOOKMARKS_FILE_ACCESS_WARNING = L"Файл с закладками повреждён, все изменения сохранены не будут";
- const wchar_t* MESSAGE_TITLE = L"NetBar";
- public:
- __fastcall TWebView(TComponent* Owner);
- void createNewTab();
- TWebBrowser* getCurrentBrowser();
- void __fastcall DocumentComplete(TObject *ASender, _di_IDispatch const pDisp,
- const OleVariant &URL);
- void __fastcall TitleChange(TObject *ASender, const WideString Text);
- void __fastcall NewWindow3(TObject *ASender, _di_IDispatch &ppDisp, WordBool &Cancel,
- unsigned int val, const WideString bstrUrlContext, const WideString bstrUrl);
- void __fastcall BeforeNavigate2(TObject *ASender, _di_IDispatch const pDisp,
- const OleVariant &URL, const OleVariant &Flags, const OleVariant &TargetFrameName,
- const OleVariant &PostData, const OleVariant &Headers,
- WordBool &Cancel);
- void updateBookmarksBox();
- void registerSiteVisit(std::string title, std::string url);
- void setAddBookmarkBtnVisible(bool isVisible);
- void search(std::string request);
- void setLoadingStatus(bool status);
- void closeTab(int index);
- String title = "";
- String pageURL = "";
- BookmarksManager *bookmarksManager;
- HistoryManager *historyManager;
- BrowserManager *browserManager;
- StringConverter *converter;
- String homepageUrl;
- };
- extern PACKAGE TWebView *WebView;
- #endif
- #include <vcl.h>
- #include <vector>
- #include <fstream>
- #include <string>
- #pragma hdrstop
- #include "MainView.h"
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TWebView *WebView;
- __fastcall TWebView::TWebView(TComponent* Owner)
- : TForm(Owner)
- {
- bookmarksManager = new BookmarksManager();
- historyManager = new HistoryManager();
- browserManager = new BrowserManager();
- converter = new StringConverter();
- homepageUrl = converter->convertToSystemString(browserManager->getHomepageUrl());
- }
- void __fastcall TWebView::FormCreate(TObject *Sender)
- {
- createNewTab();
- auto bookmarks = bookmarksManager->getBookmarks();
- for (int i = 0; i < bookmarks.size(); i++)
- {
- bookmarksBox
- ->Items
- ->Add(converter->convertToSystemString(bookmarks[i].first));
- }
- }
- void __fastcall TWebView::backBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- backBtn->Top = backBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::backBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- backBtn->Top = backBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::forwardBtnMouseDown(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- forwardBtn->Top = forwardBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::forwardBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- forwardBtn->Top = forwardBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::updateBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- updateBtn->Top = updateBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::updateBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- updateBtn->Top = updateBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::homeBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- homeBtn->Top = homeBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::homeBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- homeBtn->Top = homeBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::searchBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- searchBtn->Top = searchBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::searchBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- searchBtn->Top = searchBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::settingsBtnMouseDown(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- settingsBtn->Top = settingsBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::settingsBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- settingsBtn->Top = settingsBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::newTabBtnMouseDown(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- newTabBtn->Top = newTabBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::newTabBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- newTabBtn->Top = newTabBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::showBookmarksBtnMouseDown(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- showBookmarksBtn->Top = showBookmarksBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::showBookmarksBtnMouseUp(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- showBookmarksBtn->Top = showBookmarksBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::closeBtnMouseDown(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- closeBtn->Top = closeBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::closeBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- closeBtn->Top = closeBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::hideBtnMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- hideBtn->Top = hideBtn->Top + ANIMATION_OFFSET;
- }
- void __fastcall TWebView::hideBtnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
- int X, int Y)
- {
- hideBtn->Top = hideBtn->Top - ANIMATION_OFFSET;
- }
- void __fastcall TWebView::hideBtnClick(TObject *Sender)
- {
- Application->Minimize();
- }
- void __fastcall TWebView::closeBtnClick(TObject *Sender)
- {
- Application->Terminate();
- }
- void __fastcall TWebView::expandBtnClick(TObject *Sender)
- {
- if (isFullScreen)
- {
- WebView->WindowState = wsNormal;
- isFullScreen = false;
- }
- else
- {
- WebView->WindowState = wsMaximized;
- isFullScreen = true;
- }
- }
- void __fastcall TWebView::backBtnClick(TObject *Sender)
- {
- getCurrentBrowser()->GoBack();
- }
- void __fastcall TWebView::forwardBtnClick(TObject *Sender)
- {
- getCurrentBrowser()->GoForward();
- }
- void __fastcall TWebView::updateBtnClick(TObject *Sender)
- {
- getCurrentBrowser()->Refresh();
- }
- void __fastcall TWebView::searchBtnClick(TObject *Sender)
- {
- search(converter->convertToStdString(addressBar->Text));
- }
- void __fastcall TWebView::homeBtnClick(TObject *Sender)
- {
- getCurrentBrowser()->Navigate(homepageUrl);
- }
- void TWebView::search(std::string request)
- {
- bool isPrefixContains = request.rfind(URL_PREFIX, 0) == 0 ||
- request.rfind(SECURE_URL_PREFIX, 0) == 0;
- if (isPrefixContains)
- {
- getCurrentBrowser()->Navigate(converter->convertToSystemString(request));
- }
- else
- {
- getCurrentBrowser()->Navigate(SEARCH_URL + addressBar->Text);
- }
- }
- void __fastcall TWebView::addressBarClick(TObject *Sender)
- {
- addressBar->Text = pageURL;
- if (!isSelectedBar)
- {
- addressBar->SelectAll();
- }
- isSelectedBar = true;
- }
- void __fastcall TWebView::addressBarMouseLeave(TObject *Sender)
- {
- isSelectedBar = false;
- }
- void __fastcall TWebView::TitleChange(TObject *ASender, const WideString Text)
- {
- title = Text;
- if (PageControl->ActivePageIndex == loadingTab)
- {
- addressBar->Text = title;
- }
- if (!isLoaded) {
- PageControl->Pages[loadingTab]->Caption = TAB_SPACE + title + TAB_SPACE;
- }
- else
- {
- addressBar->Text = title;
- PageControl->ActivePage->Caption = TAB_SPACE + title + TAB_SPACE;
- }
- }
- void __fastcall TWebView::DocumentComplete(TObject *ASender, _di_IDispatch const pDisp, const OleVariant &URL)
- {
- pageURL = URL;
- setLoadingStatus(false);
- if (!isAnonymMode)
- {
- registerSiteVisit(converter->convertToStdString(title), converter->convertToStdString(URL));
- }
- setAddBookmarkBtnVisible(!bookmarksManager->contains(converter->convertToStdString(pageURL)));
- }
- void TWebView::registerSiteVisit(std::string title, std::string url)
- {
- time_t now = time(0);
- std::string stringTime = ctime(&now);
- historyManager->addSiteVisit(stringTime, title, url);
- }
- void TWebView::setAddBookmarkBtnVisible(bool isVisible)
- {
- deleteBookmarkBtn->Visible = !isVisible;
- addBookmarkBtn->Visible = isVisible;
- }
- void __fastcall TWebView::NewWindow3(TObject *ASender, _di_IDispatch &ppDisp, WordBool &Cancel,
- unsigned int val, const WideString bstrUrlContext, const WideString bstrUrl)
- {
- createNewTab();
- getCurrentBrowser()->Navigate(bstrUrl);
- Cancel = true;
- }
- void __fastcall TWebView::newTabBtnClick(TObject *Sender)
- {
- if (isLoaded)
- {
- createNewTab();
- }
- }
- void TWebView::createNewTab()
- {
- TTabSheet *tab = new TTabSheet(PageControl);
- tab->Caption = NEW_TAB_CAPTION;
- tab->PageControl = PageControl;
- PageControl->ActivePage = tab;
- tab->Name = TAB_NAME_PREFIX + String(tabId);
- TWebBrowser *browser = new TWebBrowser(PageControl);
- browser->SelectedEngine = TWebBrowser::TSelectedEngine::EdgeOnly;
- browser->TOleControl::Parent = tab;
- browser->Width = tab->Width;
- browser->Height = tab->Height;
- browser->Align = alClient;
- browser->Navigate(homepageUrl);
- tab->Tag = Integer(browser);
- browser->TOleControl::Name = tab->Name + BROWSER_NAME_POSTFIX;
- browser->OnDocumentComplete = DocumentComplete;
- browser->OnNewWindow3 = NewWindow3;
- browser->OnTitleChange = TitleChange;
- browser->OnBeforeNavigate2 = BeforeNavigate2;
- tabId++;
- }
- void TWebView::closeTab(int index)
- {
- PageControl->Pages[index]->Free();
- setLoadingStatus(false);
- if (index != PageControl->PageCount)
- {
- PageControl->ActivePageIndex = index;
- }
- else
- {
- PageControl->ActivePageIndex = index - 1;
- }
- title = getCurrentBrowser()->LocationName;
- pageURL = getCurrentBrowser()->LocationURL;
- addressBar->Text = title;
- setAddBookmarkBtnVisible(!bookmarksManager->contains(converter->convertToStdString(pageURL)));
- }
- void __fastcall TWebView::PageControlChange(TObject *Sender)
- {
- title = getCurrentBrowser()->LocationName;
- pageURL = getCurrentBrowser()->LocationURL;
- addressBar->Text = title;
- setAddBookmarkBtnVisible(!bookmarksManager->contains(converter->convertToStdString(pageURL)));
- }
- void TWebView::setLoadingStatus(bool status)
- {
- isLoaded = !status;
- if (status)
- {
- activityIndicator->StartAnimation();
- }
- else
- {
- activityIndicator->StopAnimation();
- }
- updateBtn->Visible = !status;
- activityIndicator->Visible = status;
- }
- void __fastcall TWebView::PageControlMouseUp(TObject *Sender, TMouseButton Button,
- TShiftState Shift, int X, int Y)
- {
- const int CLOSE_BTN_SIZE = 20;
- if (Button == mbLeft)
- {
- TRect tabRect = PageControl->TabRect(PageControl->ActivePage->TabIndex);
- bool isClose = PtInRect(
- Classes::Rect(tabRect.Left, tabRect.Top,
- tabRect.Left + CLOSE_BTN_SIZE, tabRect.Top + CLOSE_BTN_SIZE),
- Classes::Point(X, Y));
- if (isClose && PageControl->PageCount > 1)
- {
- closeTab(PageControl->IndexOfTabAt(X, Y));
- }
- }
- }
- TWebBrowser* TWebView::getCurrentBrowser()
- {
- return (TWebBrowser*) PageControl
- ->ActivePage
- ->FindChildControl(PageControl->ActivePage->Name + BROWSER_NAME_POSTFIX);
- }
- void __fastcall TWebView::showBookmarksBtnClick(TObject *Sender)
- {
- bookmarksBox->DroppedDown = true;
- }
- void __fastcall TWebView::addBookmarkBtnClick(TObject *Sender)
- {
- if (isLoaded)
- {
- AddBookmarkForm->ShowModal();
- }
- }
- void TWebView::updateBookmarksBox()
- {
- bookmarksBox->Clear();
- auto bookmarks = bookmarksManager->getBookmarks();
- for (int i = 0; i < bookmarks.size(); i++)
- {
- bookmarksBox
- ->Items
- ->Add(converter->convertToSystemString(bookmarks[i].first));
- }
- }
- void __fastcall TWebView::BeforeNavigate2(TObject *ASender, _di_IDispatch const pDisp,
- const OleVariant &URL, const OleVariant &Flags, const OleVariant &TargetFrameName,
- const OleVariant &PostData, const OleVariant &Headers,
- WordBool &Cancel)
- {
- loadingTab = PageControl->ActivePageIndex;
- setLoadingStatus(true);
- }
- void __fastcall TWebView::bookmarksBoxSelect(TObject *Sender)
- {
- auto bookmarks = bookmarksManager->getBookmarks();
- String url = converter->convertToSystemString(bookmarks[bookmarksBox->ItemIndex].second);
- getCurrentBrowser()->Navigate(url);
- }
- void __fastcall TWebView::deleteBookmarkBtnClick(TObject *Sender)
- {
- if (isLoaded)
- {
- bool isOpenFile = bookmarksManager->removeBookmark(converter->convertToStdString(pageURL));
- if (!isOpenFile)
- {
- Application
- ->MessageBox(BOOKMARKS_FILE_ACCESS_WARNING,
- MESSAGE_TITLE,
- MB_OK | MB_ICONWARNING);
- }
- updateBookmarksBox();
- addBookmarkBtn->Visible = true;
- deleteBookmarkBtn->Visible = false;
- }
- }
- void __fastcall TWebView::settingsBtnClick(TObject *Sender)
- {
- SettingsForm->ShowModal();
- }
- void __fastcall TWebView::closeChoiceClick(TObject *Sender)
- {
- PageControl->Pages[tabPopupIndex]->Free();
- title = getCurrentBrowser()->LocationName;
- pageURL = getCurrentBrowser()->LocationURL;
- addressBar->Text = title;
- setAddBookmarkBtnVisible(!bookmarksManager->contains(converter->convertToStdString(pageURL)));
- }
- void __fastcall TWebView::FormKeyPress(TObject *Sender, System::WideChar &Key)
- {
- if(Key == 13)
- {
- search(converter->convertToStdString(addressBar->Text));
- }
- }
- void __fastcall TWebView::activateAnonymModeBtnClick(TObject *Sender)
- {
- activateAnonymModeBtn->Visible = false;
- disactivateAnonymModeBtn->Visible = true;
- anonymModeIndicatorBtn->Visible = true;
- isAnonymMode = true;
- }
- void __fastcall TWebView::disactivateAnonymModeBtnClick(TObject *Sender)
- {
- activateAnonymModeBtn->Visible = true;
- disactivateAnonymModeBtn->Visible = false;
- anonymModeIndicatorBtn->Visible = false;
- isAnonymMode = false;
- }
- void __fastcall TWebView::anonymModeIndicatorBtnClick(TObject *Sender)
- {
- AnonymModeForm->ShowModal();
- }
- void __fastcall TWebView::PageControlMouseMove(TObject *Sender, TShiftState Shift,
- int X, int Y)
- {
- TRect R = PageControl->TabRect(PageControl->IndexOfTabAt(X, Y));
- if (PtInRect(Classes::Rect(R.Left, R.Top, R.Left + 20, R.Top + 20), Classes::Point(X, Y)))
- {
- PageControl->Cursor = crHandPoint;
- }
- else
- {
- PageControl->Cursor = crDefault;
- }
- }
- void __fastcall TWebView::aboutProgramBtnClick(TObject *Sender)
- {
- AboutProgramForm->ShowModal();
- }
- #ifndef SettingsViewH
- #define SettingsViewH
- #include <System.Classes.hpp>
- #include <Vcl.Controls.hpp>
- #include <Vcl.StdCtrls.hpp>
- #include <Vcl.Forms.hpp>
- #include <Vcl.TitleBarCtrls.hpp>
- #include <Vcl.ExtCtrls.hpp>
- #include <Vcl.Imaging.pngimage.hpp>
- #include <Vcl.Buttons.hpp>
- #include "BrowserManager.h"
- #include "MainView.h"
- class TSettingsForm : public TForm
- {
- __published:
- TImage *hideBtn;
- TImage *closeBtn;
- TLabel *settingsTitle;
- TLabel *casheTitle;
- TLabel *casheSizeTitle;
- TLabel *casheSizeLabel;
- TBitBtn *clearCasheBtn;
- TLabel *browserDataTitle;
- TLabel *browserDataSizeTitle;
- TLabel *browserDataSizeLabel;
- TBitBtn *clearBrowserDataBtn;
- TLabel *browserHistoryTitle;
- TLabel *browserHistorySizeTitle;
- TLabel *browserHistorySizeLabel;
- TBitBtn *clearBrowserHistoryBtn;
- TLabel *bookmarksTitle;
- TLabel *bookmarksAmountTitle;
- TLabel *Label5;
- TBitBtn *clearBookmarksBtn;
- TLabel *bookmarksAmountLabel;
- TListBox *historyBox;
- TLabel *Label3;
- TEdit *homepageUrlEdit;
- TBitBtn *changeHomepageBtn;
- TLabel *Label1;
- TBitBtn *showHistoryBtn;
- void __fastcall closeBtnClick(TObject *Sender);
- void __fastcall hideBtnClick(TObject *Sender);
- void __fastcall FormShow(TObject *Sender);
- void __fastcall clearCasheBtnClick(TObject *Sender);
- void __fastcall clearBrowserDataBtnClick(TObject *Sender);
- void __fastcall clearBookmarksBtnClick(TObject *Sender);
- void __fastcall clearBrowserHistoryBtnClick(TObject *Sender);
- void __fastcall showHistoryBtnClick(TObject *Sender);
- void __fastcall historyBoxDblClick(TObject *Sender);
- void __fastcall changeHomepageBtnClick(TObject *Sender);
- private:
- BrowserManager *browserManager;
- bool isOpenedHistory;
- const int KB_SIZE = 1024;
- const int EXTENDED_HEIGHT = 840;
- const int DEFAULT_HEIGHT = 600;
- const int EXTENDED_WIDTH = 1050;
- const int DEFAULT_WIDTH = 500;
- const wchar_t* MESSAGE_TITLE = L"NetBar";
- const wchar_t* RESTART_WARNING = L"Для того, чтобы изменения вступили в силу, приложение сейчас перезапустится";
- const wchar_t* BROWSER_CLEANING_WARNING = L"Очистка данных браузера приведёт к удалению всех паролей, cookie файлов, кэша и др. После очистки приложение будет перезапущено. Вы действительно хотите очистить все данные браузера?";
- const wchar_t* BOOKMARKS_CLEANING_WARNING = L"Вы действительно хотите удалить все закладки безвозвратно";
- const wchar_t* HOMEPAGE_WARNING = L"Внутренние файлы повреждены, изменения сохранены не будут";
- const wchar_t* HOMEPAGE_SUCCESS = L"Домашняя страница успешно обновлена";
- const String SHOW_HISTORY_CAPTION = "Показать историю";
- const String HIDE_HISTORY_CAPTION = "Скрыть историю";
- public:
- __fastcall TSettingsForm(TComponent* Owner);
- void updateHistoryBox();
- };
- extern PACKAGE TSettingsForm *SettingsForm;
- #endif
- #include <vcl.h>
- #pragma hdrstop
- #include "SettingsView.h"
- #include "SiteVisit.h"
- #include <vector>
- #pragma resource "*.dfm"
- TSettingsForm *SettingsForm;
- __fastcall TSettingsForm::TSettingsForm(TComponent* Owner)
- : TForm(Owner)
- {
- browserManager = new BrowserManager();
- }
- void __fastcall TSettingsForm::closeBtnClick(TObject *Sender)
- {
- SettingsForm->Close();
- }
- void __fastcall TSettingsForm::hideBtnClick(TObject *Sender)
- {
- Application->Minimize();
- }
- void __fastcall TSettingsForm::FormShow(TObject *Sender)
- {
- int casheSize = browserManager->getCasheSize();
- int browserDataSize = browserManager->getBrowserDataSize();
- casheSizeLabel->Caption = IntToStr((casheSize / KB_SIZE / KB_SIZE)) + " MB";
- browserDataSizeLabel->Caption = IntToStr((browserDataSize / KB_SIZE / KB_SIZE)) + " MB";
- bookmarksAmountLabel->Caption = IntToStr(WebView->bookmarksManager->getSize());
- browserHistorySizeLabel->Caption = IntToStr(WebView->historyManager->getSize());
- updateHistoryBox();
- isOpenedHistory = false;
- homepageUrlEdit->Text = WebView->homepageUrl;
- SettingsForm->Width = DEFAULT_WIDTH;
- showHistoryBtn->Caption = SHOW_HISTORY_CAPTION;
- }
- void __fastcall TSettingsForm::clearCasheBtnClick(TObject *Sender)
- {
- browserManager->clearCashe();
- Application
- ->MessageBox(RESTART_WARNING,
- MESSAGE_TITLE,
- MB_OK | MB_ICONINFORMATION);
- ShellExecute(0, 0, Application->ExeName.c_str(), 0, 0, SW_SHOW);
- Application->Terminate();
- }
- void __fastcall TSettingsForm::clearBrowserDataBtnClick(TObject *Sender)
- {
- if (Application->MessageBox(BROWSER_CLEANING_WARNING, MESSAGE_TITLE,
- MB_YESNO | MB_ICONINFORMATION) == IDYES)
- {
- delete WebView->PageControl;
- Sleep(200);
- browserManager->clearBrowserData();
- ShellExecute(0, 0, Application->ExeName.c_str(), 0, 0, SW_SHOW);
- Application->Terminate();
- }
- }
- void __fastcall TSettingsForm::clearBookmarksBtnClick(TObject *Sender)
- {
- if (Application->MessageBox(BOOKMARKS_CLEANING_WARNING, MESSAGE_TITLE,
- MB_YESNO | MB_ICONINFORMATION) == IDYES)
- {
- WebView->bookmarksManager->clearBookmarks();
- WebView->bookmarksBox->Clear();
- bookmarksAmountLabel->Caption = IntToStr(WebView->bookmarksManager->getSize());
- }
- }
- void TSettingsForm::updateHistoryBox()
- {
- std::vector<SiteVisit> history = WebView->historyManager->getHistory();
- historyBox->Clear();
- for (int i = history.size() - 1; i >= 0; i--)
- {
- historyBox->Items->Add((history[i].getTime() + " - " +
- history[i].getTitle()).c_str());
- }
- }
- void __fastcall TSettingsForm::clearBrowserHistoryBtnClick(TObject *Sender)
- {
- WebView->historyManager->clearHistory();
- historyBox->Clear();
- browserHistorySizeLabel->Caption = IntToStr(WebView->historyManager->getSize());
- }
- void __fastcall TSettingsForm::showHistoryBtnClick(TObject *Sender)
- {
- if (isOpenedHistory)
- {
- isOpenedHistory = false;
- SettingsForm->Width = DEFAULT_WIDTH;
- showHistoryBtn->Caption = HIDE_HISTORY_CAPTION;
- }
- else
- {
- isOpenedHistory = true;
- SettingsForm->Width = EXTENDED_WIDTH;
- showHistoryBtn->Caption = SHOW_HISTORY_CAPTION;
- }
- }
- void __fastcall TSettingsForm::historyBoxDblClick(TObject *Sender)
- {
- int size = WebView->historyManager->getSize();
- int index = size - historyBox->ItemIndex - 1;
- std::vector<SiteVisit> history = WebView->historyManager->getHistory();
- WebView->createNewTab();
- WebView->getCurrentBrowser()->Navigate(history[index].getUrl().c_str());
- SettingsForm->Close();
- }
- void __fastcall TSettingsForm::changeHomepageBtnClick(TObject *Sender)
- {
- StringConverter *converter = new StringConverter();
- String url = homepageUrlEdit->Text;
- bool isOpen = WebView->browserManager->setHomepageUrl(converter->convertToStdString(url));
- WebView->homepageUrl = url;
- if (isOpen)
- {
- Application
- ->MessageBox(HOMEPAGE_SUCCESS,
- MESSAGE_TITLE,
- MB_OK | MB_ICONINFORMATION);
- }
- else
- {
- Application
- ->MessageBox(HOMEPAGE_WARNING,
- MESSAGE_TITLE,
- MB_OK | MB_ICONINFORMATION);
- }
- }
- #ifndef AddBookmarkViewH
- #define AddBookmarkViewH
- #include <System.Classes.hpp>
- #include <Vcl.Controls.hpp>
- #include <Vcl.StdCtrls.hpp>
- #include <Vcl.Forms.hpp>
- #include <Vcl.Buttons.hpp>
- #include <Vcl.ExtCtrls.hpp>
- #include <Vcl.Imaging.pngimage.hpp>
- #include <utility>
- #include <string>
- #include <regex>
- #include "MainView.h"
- class TAddBookmarkForm : public TForm
- {
- __published:
- TEdit *titleEdit;
- TBitBtn *addBtn;
- TBitBtn *cancelBtn;
- TLabel *casheSizeTitle;
- void __fastcall cancelBtnClick(TObject *Sender);
- void __fastcall addBtnClick(TObject *Sender);
- void __fastcall FormShow(TObject *Sender);
- void __fastcall titleEditChange(TObject *Sender);
- private:
- const wchar_t* BOOKMARKS_FILE_ACCESS_WARNING = L"Файл с закладками повреждён, все изменения сохранены не будут";
- const wchar_t* MESSAGE_TITLE = L"NetBar";
- public:
- __fastcall TAddBookmarkForm(TComponent* Owner);
- };
- extern PACKAGE TAddBookmarkForm *AddBookmarkForm;
- #endif
- #include <vcl.h>
- #pragma hdrstop
- #include "AddBookmarkView.h"
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TAddBookmarkForm *AddBookmarkForm;
- __fastcall TAddBookmarkForm::TAddBookmarkForm(TComponent* Owner)
- : TForm(Owner)
- {
- }
- void __fastcall TAddBookmarkForm::cancelBtnClick(TObject *Sender)
- {
- AddBookmarkForm->Close();
- }
- void __fastcall TAddBookmarkForm::addBtnClick(TObject *Sender)
- {
- StringConverter *converter = new StringConverter();
- bool isOpenFile = WebView->bookmarksManager
- ->addBookmark(converter->convertToStdString(titleEdit->Text.Trim()),
- converter->convertToStdString(WebView->pageURL));
- delete converter;
- if (!isOpenFile)
- {
- Application
- ->MessageBox(BOOKMARKS_FILE_ACCESS_WARNING,
- MESSAGE_TITLE,
- MB_OK | MB_ICONWARNING);
- }
- WebView->updateBookmarksBox();
- WebView->addBookmarkBtn->Visible = false;
- WebView->deleteBookmarkBtn->Visible = true;
- AddBookmarkForm->Close();
- }
- void __fastcall TAddBookmarkForm::FormShow(TObject *Sender)
- {
- titleEdit->Text = WebView->title;
- }
- void __fastcall TAddBookmarkForm::titleEditChange(TObject *Sender)
- {
- StringConverter *converter = new StringConverter();
- std::string title = converter->convertToStdString(titleEdit->Text.Trim());
- addBtn->Enabled =
- !WebView->bookmarksManager->titleExists(title) &&
- title != "";
- }
- #ifndef BookmarksManagerH
- #define BookmarksManagerH
- #include <vector>
- #include <utility>
- #include <fstream>
- #include <regex>
- #include "BookmarksReader.h"
- #include "BookmarksWriter.h"
- #include "StringConverter.h"
- class BookmarksManager
- {
- private:
- std::vector<std::pair<std::string, std::string>> bookmarks;
- BookmarksWriter *writer;
- BookmarksReader *reader;
- void readBookmarks(std::string path);
- bool writeBookmarks(std::string path);
- const std::string FILENAME = "bookmarks";
- public:
- BookmarksManager();
- ~BookmarksManager();
- bool addBookmark(std::string title, std::string url);
- bool contains(std::string url);
- bool titleExists(std::string title);
- bool removeBookmark(std::string url);
- bool clearBookmarks();
- std::vector<std::pair<std::string, std::string>> getBookmarks();
- int getSize();
- };
- #endif
- #pragma hdrstop
- #include "BookmarksManager.h"
- #pragma package(smart_init)
- BookmarksManager::BookmarksManager()
- {
- writer = new BookmarksWriter();
- reader = new BookmarksReader();
- readBookmarks(FILENAME);
- }
- BookmarksManager::~BookmarksManager()
- {
- delete writer;
- delete reader;
- std::vector<std::pair<std::string, std::string>>().swap(bookmarks);
- }
- void BookmarksManager::readBookmarks(std::string path)
- {
- bookmarks = reader->readBookmarks(path);
- }
- bool BookmarksManager::writeBookmarks(std::string path)
- {
- return writer->writeBookmarks(bookmarks, path);
- }
- bool BookmarksManager::addBookmark(std::string title, std::string url)
- {
- std::pair<std::string, std::string> pair;
- pair.first = title;
- pair.second = url;
- bookmarks.push_back(pair);
- return writeBookmarks(FILENAME);
- }
- bool BookmarksManager::clearBookmarks()
- {
- bookmarks.clear();
- return writeBookmarks(FILENAME);
- }
- bool BookmarksManager::contains(std::string url)
- {
- for (int i = 0; i < bookmarks.size(); ++i)
- {
- if (bookmarks[i].second == url)
- {
- return true;
- }
- }
- return false;
- }
- bool BookmarksManager::titleExists(std::string title)
- {
- for (int i = 0; i < bookmarks.size(); ++i)
- {
- if (bookmarks[i].first == title)
- {
- return true;
- }
- }
- return false;
- }
- bool BookmarksManager::removeBookmark(std::string url)
- {
- int index = 0;
- while (index < bookmarks.size() && url != bookmarks[index].second)
- {
- index++;
- }
- if (index != bookmarks.size()) {
- bookmarks.erase(bookmarks.begin() + index);
- return writeBookmarks(FILENAME);
- }
- return false;
- }
- std::vector<std::pair<std::string, std::string>> BookmarksManager::getBookmarks()
- {
- return bookmarks;
- }
- int BookmarksManager::getSize()
- {
- return bookmarks.size();
- }
- #ifndef HistoryManagerH
- #define HistoryManagerH
- #include <vector>
- #include <utility>
- #include <fstream>
- #include <regex>
- #include "HistoryReader.h"
- #include "HistoryWriter.h"
- #include "StringConverter.h"
- #include "SiteVisit.h"
- class HistoryManager
- {
- private:
- std::vector<SiteVisit> history;
- HistoryWriter *writer;
- HistoryReader *reader;
- void readHistory(std::string path);
- bool writeHistory(std::string path);
- const std::string FILENAME = "history";
- public:
- HistoryManager();
- ~HistoryManager();
- bool addSiteVisit(std::string time, std::string title, std::string url);
- bool clearHistory();
- std::vector<SiteVisit> getHistory();
- int getSize();
- };
- #endif
- #pragma hdrstop
- #include "HistoryManager.h"
- #pragma package(smart_init)
- HistoryManager::HistoryManager()
- {
- writer = new HistoryWriter();
- reader = new HistoryReader();
- readHistory(FILENAME);
- }
- HistoryManager::~HistoryManager()
- {
- delete writer;
- delete reader;
- std::vector<SiteVisit>().swap(history);
- }
- void HistoryManager::readHistory(std::string path)
- {
- history = reader->readHistory(path);
- }
- bool HistoryManager::writeHistory(std::string path)
- {
- return writer->writeHistory(history, path);
- }
- bool HistoryManager::addSiteVisit(std::string time, std::string title, std::string url)
- {
- SiteVisit *visit = new SiteVisit(title, url, time);
- history.push_back(*visit);
- return writeHistory(FILENAME);
- }
- bool HistoryManager::clearHistory()
- {
- history.clear();
- return writeHistory(FILENAME);
- }
- std::vector<SiteVisit> HistoryManager::getHistory()
- {
- return history;
- }
- int HistoryManager::getSize()
- {
- return history.size();
- }
- #ifndef BrowserManagerH
- #define BrowserManagerH
- #include <System.Classes.hpp>
- #include <utility>
- #include <filesystem>
- #include <fstream>
- #include <string>
- #include <ctype.h>
- class BrowserManager
- {
- private:
- const AnsiString CASHE_PATH = "Project1.exe.WebView2\\EBWebView\\Default\\Cache";
- const AnsiString BROWSER_DATA_PATH = "Project1.exe.WebView2\\EBWebView\\Default";
- const std::string DEFAULT_HOMEPAGE_URL = "https://www.google.com/";
- const std::string HOMEPAGE_FILENAME = "homepage";
- std::string homepageUrl;
- int getFolderSize(AnsiString folder, int &size);
- std::string readHomePageUrl(std::string path);
- bool writeHomepageUrl(std::string path, std::string newUrl);
- public:
- BrowserManager();
- int getCasheSize();
- std::string getHomepageUrl();
- void clearCashe();
- int getBrowserDataSize();
- void clearBrowserData();
- bool setHomepageUrl(std::string newUrl);
- };
- #endif
- #pragma hdrstop
- #include "BrowserManager.h"
- #pragma package(smart_init)
- BrowserManager::BrowserManager()
- {
- homepageUrl = readHomePageUrl(HOMEPAGE_FILENAME);
- if (homepageUrl.empty())
- {
- homepageUrl = DEFAULT_HOMEPAGE_URL;
- }
- }
- int BrowserManager::getFolderSize(AnsiString folder, int &size)
- {
- TSearchRec searchRec;
- if (folder[folder.Length()] == '\\')
- {
- folder.SetLength(folder.Length() - 1);
- }
- if (FindFirst(folder + "\\*.*", faAnyFile, searchRec) == 0)
- {
- do
- {
- if (searchRec.Name != "." && searchRec.Name != "..")
- {
- if ((searchRec.Attr & faDirectory) != 0)
- {
- getFolderSize(folder + "\\" + searchRec.Name, size);
- }
- else
- {
- size += searchRec.Size;
- }
- }
- } while (FindNext(searchRec) == 0);
- }
- FindClose(searchRec);
- return size;
- }
- int BrowserManager::getCasheSize()
- {
- int size = 0;
- return getFolderSize(CASHE_PATH, size);
- }
- std::string BrowserManager::getHomepageUrl()
- {
- return homepageUrl;
- }
- int BrowserManager::getBrowserDataSize()
- {
- int size = 0;
- return getFolderSize(BROWSER_DATA_PATH, size);
- }
- void BrowserManager::clearCashe()
- {
- std::filesystem::remove_all(CASHE_PATH.c_str());
- }
- void BrowserManager::clearBrowserData()
- {
- std::filesystem::remove_all(BROWSER_DATA_PATH.c_str());
- }
- std::string BrowserManager::readHomePageUrl(std::string path)
- {
- std::ifstream fileReader;
- std::string url;
- fileReader.open(path);
- if (fileReader.is_open())
- {
- std::getline(fileReader, url);
- fileReader.close();
- }
- return url;
- }
- bool BrowserManager::setHomepageUrl(std::string newUrl)
- {
- homepageUrl = newUrl;
- return writeHomepageUrl(HOMEPAGE_FILENAME, newUrl);
- }
- bool BrowserManager::writeHomepageUrl(std::string path, std::string newUrl)
- {
- std::ofstream fileWriter;
- std::string url;
- fileWriter.open(path);
- bool isOpen = fileWriter.is_open();
- if (isOpen)
- {
- fileWriter << newUrl;
- }
- return isOpen;
- }
- #ifndef BookmarksReaderH
- #define BookmarksReaderH
- #include <vector>
- #include <utility>
- #include <fstream>
- #include <regex>
- class BookmarksReader
- {
- private:
- public:
- std::vector<std::pair<std::string, std::string>> readBookmarks(std::string path);
- };
- #endif
- #pragma hdrstop
- #include "BookmarksReader.h"
- #pragma package(smart_init)
- std::vector<std::pair<std::string, std::string>> BookmarksReader::readBookmarks(std::string path)
- {
- const std::regex r(R"(^.+\S=.+\S$)");
- std::vector<std::pair<std::string, std::string>> bookmarks;
- std::ifstream fileReader;
- std::string line;
- fileReader.open(path);
- if (fileReader.is_open())
- {
- while (!fileReader.eof())
- {
- std::pair<std::string, std::string> pair;
- std::getline(fileReader, line);
- if (!std::regex_match(line, r))
- {
- bookmarks.clear();
- return bookmarks;
- }
- int index = line.find("=");
- pair.first = line.substr(0, index);
- pair.second = line.substr(index + 1);
- bookmarks.push_back(pair);
- }
- fileReader.close();
- }
- return bookmarks;
- }
- #ifndef BookmarksWriterH
- #define BookmarksWriterH
- #include <vector>
- #include <utility>
- #include <fstream>
- class BookmarksWriter
- {
- private:
- public:
- bool writeBookmarks(std::vector<std::pair<std::string, std::string>> bookmarks, std::string path);
- };
- #endif
- #pragma hdrstop
- #include "BookmarksWriter.h"
- #pragma package(smart_init)
- bool BookmarksWriter::writeBookmarks(std::vector<std::pair<std::string, std::string>> bookmarks, std::string path)
- {
- std::ofstream writer;
- std::string line;
- writer.open(path);
- bool isOpen = writer.is_open();
- if (isOpen)
- {
- for (int i = 0; i < bookmarks.size(); ++i)
- {
- if(i + 1 == bookmarks.size())
- {
- writer << bookmarks[i].first + "=" + bookmarks[i].second;
- }
- else
- {
- writer << bookmarks[i].first + "=" + bookmarks[i].second << std::endl;
- }
- }
- writer.close();
- }
- return isOpen;
- }
- #ifndef HistoryReaderH
- #define HistoryReaderH
- #include "SiteVisit.h"
- #include <vector>
- #include <utility>
- #include <fstream>
- #include <regex>
- class HistoryReader
- {
- private:
- public:
- std::vector<SiteVisit> readHistory(std::string path);
- };
- #endif
- #pragma hdrstop
- #include "HistoryReader.h"
- #pragma package(smart_init)
- std::vector<SiteVisit> HistoryReader::readHistory(std::string path)
- {
- std::vector<SiteVisit> history;
- std::ifstream fileReader;
- std::string line;
- std::string time;
- std::string title;
- std::string url;
- fileReader.open(path);
- if (fileReader.is_open())
- {
- while (!fileReader.eof())
- {
- std::getline(fileReader, time);
- if (!fileReader.eof())
- {
- std::getline(fileReader, title);
- }
- else
- {
- history.clear();
- return history;
- }
- if (!fileReader.eof())
- {
- std::getline(fileReader, url);
- }
- else
- {
- history.clear();
- return history;
- }
- SiteVisit *visit = new SiteVisit(title, url, time + "\n");
- history.push_back(*visit);
- }
- fileReader.close();
- }
- return history;
- }
- #ifndef HistoryWriterH
- #define HistoryWriterH
- #include "SiteVisit.h"
- #include <vector>
- #include <utility>
- #include <fstream>
- class HistoryWriter
- {
- private:
- public:
- bool writeHistory(std::vector<SiteVisit> history, std::string path);
- };
- #endif
- #pragma hdrstop
- #include "HistoryWriter.h"
- #pragma package(smart_init)
- bool HistoryWriter::writeHistory(std::vector<SiteVisit> history, std::string path)
- {
- std::ofstream writer;
- std::string line;
- writer.open(path);
- bool isOpen = writer.is_open();
- if (isOpen)
- {
- for (int i = 0; i < history.size(); ++i)
- {
- if(i + 1 == history.size())
- {
- writer << history[i].getTime();
- writer << history[i].getTitle() << std::endl;
- writer << history[i].getUrl();
- }
- else
- {
- writer << history[i].getTime();
- writer << history[i].getTitle() << std::endl;
- writer << history[i].getUrl() << std::endl;
- }
- }
- writer.close();
- }
- return isOpen;
- }
- #ifndef SiteVisitH
- #define SiteVisitH
- #include <string>
- class SiteVisit
- {
- private:
- std::string title;
- std::string url;
- std::string time;
- public:
- SiteVisit(std::string title, std::string url, std::string time);
- std::string getTitle();
- std::string getUrl();
- std::string getTime();
- };
- #endif
- #pragma hdrstop
- #include "SiteVisit.h"
- #pragma package(smart_init)
- SiteVisit::SiteVisit(std::string title, std::string url, std::string time)
- {
- this->title = title;
- this->url = url;
- this->time = time;
- }
- std::string SiteVisit::getTitle()
- {
- return this->title;
- }
- std::string SiteVisit::getUrl()
- {
- return this->url;
- }
- std::string SiteVisit::getTime()
- {
- return this->time;
- }
- #ifndef StringConverterH
- #define StringConverterH
- #include <string>
- #include <System.Classes.hpp>
- class StringConverter
- {
- private:
- public:
- std::string convertToStdString(String str);
- String convertToSystemString(std::string str);
- };
- #endif
- #pragma hdrstop
- #include "StringConverter.h"
- #pragma package(smart_init)
- std::string StringConverter::convertToStdString(String str)
- {
- AnsiString ansiStr = str;
- return ansiStr.c_str();
- }
- String StringConverter::convertToSystemString(std::string str)
- {
- return str.c_str();
- }
Add Comment
Please, Sign In to add comment