New Code by Mattias Sundblad.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2877 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
SettingsView.cpp
|
||||||
|
*/
|
||||||
|
#ifndef _RADIO_BUTTON_H
|
||||||
|
#include <RadioButton.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _STRING_VIEW_H
|
||||||
|
#include <StringView.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _VIEW_H
|
||||||
|
#include <View.h>
|
||||||
|
#endif
|
||||||
|
////////
|
||||||
|
#ifndef SETTINGS_VIEW_H
|
||||||
|
#include "SettingsView.h"
|
||||||
|
#endif
|
||||||
|
SettingsView::SettingsView(BRect frame):
|
||||||
|
BView(frame,"Settings",B_FOLLOW_ALL,B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP | B_PULSE_NEEDED)
|
||||||
|
{
|
||||||
|
buildView();
|
||||||
|
} //SettingsView::SettingsView()
|
||||||
|
|
||||||
|
void
|
||||||
|
SettingsView:: buildView()
|
||||||
|
{
|
||||||
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
|
//month/date/year
|
||||||
|
//BBox?
|
||||||
|
//BRect monthFrame(8.0, 1.0, 150.0, 20.0);
|
||||||
|
|
||||||
|
//the calender
|
||||||
|
|
||||||
|
//hour/minute/second AM/PM
|
||||||
|
|
||||||
|
//the clock
|
||||||
|
|
||||||
|
|
||||||
|
//"Clock set to:"-label
|
||||||
|
BStringView *fClockSet;
|
||||||
|
|
||||||
|
const char *clockset= "Clock set to: ";
|
||||||
|
float csLength= be_plain_font->StringWidth(clockset);
|
||||||
|
BRect clockSetframe(178.0, 147.0, 178.0+csLength, 157.0);
|
||||||
|
fClockSet= new BStringView(clockSetframe, "clockset", clockset);
|
||||||
|
AddChild(fClockSet);
|
||||||
|
|
||||||
|
//the radiobuttons..
|
||||||
|
//local time
|
||||||
|
BRadioButton *locButton;
|
||||||
|
BRect locFrame(247.0, 144.0, 324.0, 154.0);
|
||||||
|
locButton= new BRadioButton(locFrame,"loc", "Local time", NULL);
|
||||||
|
AddChild(locButton);
|
||||||
|
//GMT
|
||||||
|
BRadioButton *gmtButton;
|
||||||
|
BRect gmtFrame(247.0, 160.0, 324.0, 170.0);
|
||||||
|
gmtButton= new BRadioButton(gmtFrame,"gmt", "GMT", NULL);
|
||||||
|
AddChild(gmtButton);
|
||||||
|
|
||||||
|
}//SettingsView::buildView()
|
||||||
|
|
||||||
|
void
|
||||||
|
SettingsView::changeRTCSetting()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
edit file "RTC_time_settings" in B_USER_SETTINGS_DIRECTORY
|
||||||
|
if GMT is set, file reads "GMT", if set to local time, file reads "local"
|
||||||
|
If no such file exists, create one!
|
||||||
|
|
||||||
|
if(file_exists){
|
||||||
|
open file
|
||||||
|
read file
|
||||||
|
if content != msgstring
|
||||||
|
change content
|
||||||
|
}
|
||||||
|
else
|
||||||
|
create file RTC_time_settings
|
||||||
|
write string from msg to file
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}//SettingsView::changeRTCSetting()
|
||||||
|
|
||||||
|
void
|
||||||
|
SettingsView::Draw(BRect frame)
|
||||||
|
{
|
||||||
|
//inherited::Draw(updateFrame);
|
||||||
|
//draw a separator line
|
||||||
|
rgb_color black= {0,0,0,255};
|
||||||
|
SetLowColor(black);
|
||||||
|
|
||||||
|
BPoint start(160.0, 5.0);
|
||||||
|
BPoint end(160.0, 175.0);
|
||||||
|
StrokeLine(start, end, B_SOLID_LOW);
|
||||||
|
}//SettingsView::Draw(BRect frame)
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
SettingsView.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SETTINGS_VIEW_H
|
||||||
|
#define SETTINGS_VIEW_H
|
||||||
|
|
||||||
|
#ifndef _VIEW_H
|
||||||
|
#include <View.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class SettingsView : public BView
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SettingsView(BRect frame);
|
||||||
|
virtual void Draw(BRect frame);
|
||||||
|
void changeRTCsetting();
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
void buildView();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Time.cpp
|
* Time.cpp
|
||||||
* Time [email protected]
|
* Time mccall@@digitalparadise.co.uk
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -68,3 +68,6 @@ TimeApplication::~TimeApplication()
|
|||||||
{
|
{
|
||||||
delete fSettings;
|
delete fSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,3 +27,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -14,4 +14,17 @@ const uint32 SLIDER_DELAY_RATE = 'SLdr';
|
|||||||
|
|
||||||
const uint32 ERROR_DETECTED = 'ERor';
|
const uint32 ERROR_DETECTED = 'ERor';
|
||||||
|
|
||||||
|
//Timezonemessages
|
||||||
|
const uint32 REGION_CHANGED ='REch';
|
||||||
|
const uint32 TIME_ZONE_CHANGED ='TZch';
|
||||||
|
|
||||||
|
//SetButton
|
||||||
|
const uint32 SET_TIME_ZONE ='SEti';
|
||||||
|
|
||||||
|
//local and GMT settings
|
||||||
|
const uint32 RTC_SETTINGS ='RTse';
|
||||||
|
|
||||||
#endif //TIME_MESSAGES_H
|
#endif //TIME_MESSAGES_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* TimeSettings.cpp
|
* TimeSettings.cpp
|
||||||
* Time [email protected]
|
* Time mccall@@digitalparadise.co.uk
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -61,3 +61,5 @@ TimeSettings::SetWindowCorner(BPoint corner)
|
|||||||
{
|
{
|
||||||
fCorner=corner;
|
fCorner=corner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,3 +18,5 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* TimeWindow.cpp
|
* TimeWindow.cpp
|
||||||
* Time [email protected]
|
* Time mccall@@digitalparadise.co.uk
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
#include <Message.h>
|
#include <Message.h>
|
||||||
#include <Screen.h>
|
#include <Screen.h>
|
||||||
|
#include <TabView.h>
|
||||||
|
|
||||||
#include "TimeMessages.h"
|
#include "TimeMessages.h"
|
||||||
#include "TimeWindow.h"
|
#include "TimeWindow.h"
|
||||||
@@ -20,7 +21,7 @@ TimeWindow::TimeWindow()
|
|||||||
: BWindow(BRect(0,0,TIME_WINDOW_RIGHT,TIME_WINDOW_BOTTTOM), "Time & Date", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE )
|
: BWindow(BRect(0,0,TIME_WINDOW_RIGHT,TIME_WINDOW_BOTTTOM), "Time & Date", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE )
|
||||||
{
|
{
|
||||||
BScreen screen;
|
BScreen screen;
|
||||||
BSlider *slider=NULL;
|
//BSlider *slider=NULL;
|
||||||
|
|
||||||
MoveTo(dynamic_cast<TimeApplication *>(be_app)->WindowCorner());
|
MoveTo(dynamic_cast<TimeApplication *>(be_app)->WindowCorner());
|
||||||
|
|
||||||
@@ -28,21 +29,40 @@ TimeWindow::TimeWindow()
|
|||||||
if (!(screen.Frame().right >= Frame().right && screen.Frame().bottom >= Frame().bottom))
|
if (!(screen.Frame().right >= Frame().right && screen.Frame().bottom >= Frame().bottom))
|
||||||
MoveTo((screen.Frame().right-Bounds().right)*.5,(screen.Frame().bottom-Bounds().bottom)*.5);
|
MoveTo((screen.Frame().right-Bounds().right)*.5,(screen.Frame().bottom-Bounds().bottom)*.5);
|
||||||
|
|
||||||
BuildView();
|
BuildViews();
|
||||||
AddChild(fView);
|
SetPulseRate(500000); //pulse rate. Mattias Sundblad
|
||||||
|
|
||||||
Show();
|
Show();
|
||||||
|
|
||||||
}
|
}//TimeWindow::TimeWindow()
|
||||||
|
|
||||||
void
|
void TimeWindow::BuildViews()
|
||||||
TimeWindow::BuildView()
|
|
||||||
{
|
{
|
||||||
fView = new TimeView(Bounds());
|
BRect viewRect= Bounds();
|
||||||
}
|
|
||||||
|
//the views:
|
||||||
|
fTimeSettings = new SettingsView(viewRect);
|
||||||
|
fTimeZones = new ZoneView(viewRect);
|
||||||
|
|
||||||
|
//The tabs:
|
||||||
|
BTabView *fTabView;
|
||||||
|
BTab *fTab;
|
||||||
|
fTabView = new BTabView(viewRect, "tab_view");
|
||||||
|
|
||||||
bool
|
// Settings Tab;
|
||||||
TimeWindow::QuitRequested()
|
fTab = new BTab();
|
||||||
|
fTabView -> AddTab(fTimeSettings,fTab);
|
||||||
|
fTab -> SetLabel("Settings");
|
||||||
|
|
||||||
|
//Time zone tab:
|
||||||
|
fTab = new BTab();
|
||||||
|
fTabView -> AddTab(fTimeZones,fTab);
|
||||||
|
fTab -> SetLabel("Time Zone");
|
||||||
|
|
||||||
|
AddChild(fTabView);
|
||||||
|
|
||||||
|
}//TimeWindow::BuildViews()
|
||||||
|
|
||||||
|
bool TimeWindow::QuitRequested()
|
||||||
{
|
{
|
||||||
|
|
||||||
dynamic_cast<TimeApplication *>(be_app)->SetWindowCorner(BPoint(Frame().left,Frame().top));
|
dynamic_cast<TimeApplication *>(be_app)->SetWindowCorner(BPoint(Frame().left,Frame().top));
|
||||||
@@ -50,21 +70,30 @@ TimeWindow::QuitRequested()
|
|||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
} //TimeWindow::QuitRequested()
|
||||||
|
|
||||||
void
|
void TimeWindow::MessageReceived(BMessage *message)
|
||||||
TimeWindow::MessageReceived(BMessage *message)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
switch(message->what) {
|
switch(message->what) {
|
||||||
|
case REGION_CHANGED:
|
||||||
|
fTimeZones -> ChangeRegion(message);
|
||||||
|
break;
|
||||||
|
case SET_TIME_ZONE:
|
||||||
|
fTimeZones -> setTimeZone();
|
||||||
|
break;
|
||||||
|
case TIME_ZONE_CHANGED:
|
||||||
|
fTimeZones -> newTimeZone();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
BWindow::MessageReceived(message);
|
BWindow::MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}//TimeWindow::MessageReceived(BMessage *message)
|
||||||
|
|
||||||
TimeWindow::~TimeWindow()
|
TimeWindow::~TimeWindow()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}//TimeWindow::~TimeWindow()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
|
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
#include "SettingsView.h"
|
||||||
#include "TimeSettings.h"
|
#include "TimeSettings.h"
|
||||||
#include "TimeView.h"
|
#include "ZoneView.h"
|
||||||
|
|
||||||
class TimeWindow : public BWindow
|
class TimeWindow : public BWindow
|
||||||
{
|
{
|
||||||
@@ -14,11 +16,12 @@ public:
|
|||||||
|
|
||||||
bool QuitRequested();
|
bool QuitRequested();
|
||||||
void MessageReceived(BMessage *message);
|
void MessageReceived(BMessage *message);
|
||||||
void BuildView();
|
void BuildViews();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TimeView *fView;
|
SettingsView *fTimeSettings;
|
||||||
|
ZoneView *fTimeZones;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,271 @@
|
|||||||
|
/*
|
||||||
|
ZoneView.cpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <Button.h>
|
||||||
|
#include <Entry.h>
|
||||||
|
#include <FindDirectory.h>
|
||||||
|
#include <Directory.h>
|
||||||
|
#include <ListItem.h>
|
||||||
|
#include <ListView.h>
|
||||||
|
#include <MenuField.h>
|
||||||
|
#include <MenuItem.h>
|
||||||
|
#include <Path.h>
|
||||||
|
#include <PopUpMenu.h>
|
||||||
|
#include <ScrollView.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <StringView.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <View.h>
|
||||||
|
|
||||||
|
#include "TimeMessages.h"
|
||||||
|
#include "ZoneView.h"
|
||||||
|
|
||||||
|
ZoneView::ZoneView(BRect frame):
|
||||||
|
BView(frame,"",B_FOLLOW_ALL,B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP | B_PULSE_NEEDED)
|
||||||
|
{
|
||||||
|
buildView();
|
||||||
|
} //ZoneView::ZoneView()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView:: buildView()
|
||||||
|
{
|
||||||
|
//viewcolor
|
||||||
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
|
//BMenuField with BPopUpMenu for the timezones.
|
||||||
|
//The box...
|
||||||
|
BRect boxrect(8.0, 1.0, 157.0, 20.0);
|
||||||
|
|
||||||
|
//popup menu
|
||||||
|
fZonePopUp = new BPopUpMenu("",true, true, B_ITEMS_IN_COLUMN);
|
||||||
|
|
||||||
|
//Menufield..
|
||||||
|
BMenuField *mField;
|
||||||
|
mField= new BMenuField(boxrect, "mfield", NULL, fZonePopUp, true, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW | B_NAVIGABLE);
|
||||||
|
|
||||||
|
AddChild(mField);
|
||||||
|
|
||||||
|
|
||||||
|
//Adding listview. Matsu
|
||||||
|
BRect flistframe(10.0, 25.0, 140.0, 170.0);
|
||||||
|
//BListView *fCityList; to header
|
||||||
|
fCityList= new BListView(flistframe,"cities", B_SINGLE_SELECTION_LIST, B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||||||
|
B_WILL_DRAW | B_NAVIGABLE | B_FRAME_EVENTS);
|
||||||
|
//selectionmessage
|
||||||
|
BMessage *cityChange = new BMessage(TIME_ZONE_CHANGED);
|
||||||
|
fCityList -> SetSelectionMessage(cityChange);
|
||||||
|
|
||||||
|
//place listview in a scrollview. matsu
|
||||||
|
BScrollView *scrollList;
|
||||||
|
scrollList = new BScrollView("scroll_list", fCityList, B_FOLLOW_LEFT | B_FOLLOW_TOP, 0, false, true);
|
||||||
|
AddChild(scrollList);
|
||||||
|
|
||||||
|
//adding menuitems
|
||||||
|
BMenuItem *zoneItem;
|
||||||
|
BMessage *zoneMessage;
|
||||||
|
|
||||||
|
zoneItem= new BMenuItem("Africa", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Africa");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Antarctica", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Antarctica");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Arctic", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Arctic");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Asia", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Asia");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Atlantic Ocean", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Atlantic");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Australia", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Australia");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Europe", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Europe");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Greenland", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Greenland");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Indian Ocean", zoneMessage= new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Indian");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("North and Central America", zoneMessage= new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "North_and_Central_America");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("Pacific Ocean", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "Pacific");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
zoneItem= new BMenuItem("South America", zoneMessage = new BMessage(REGION_CHANGED));
|
||||||
|
zoneMessage -> AddString("region", "South_America");
|
||||||
|
fZonePopUp -> AddItem(zoneItem);
|
||||||
|
|
||||||
|
//label #1
|
||||||
|
BStringView *fCurrent;
|
||||||
|
|
||||||
|
const char *current= "Current time zone:";
|
||||||
|
float length = be_plain_font -> StringWidth(current);
|
||||||
|
|
||||||
|
BRect currframe(168.0, 43.0, 168.0+length, 53.0);
|
||||||
|
fCurrent = new BStringView(currframe, "current", current);
|
||||||
|
|
||||||
|
AddChild(fCurrent);
|
||||||
|
|
||||||
|
//label #2
|
||||||
|
BStringView *fTimeIn;
|
||||||
|
|
||||||
|
const char *timeIn= "Time in:";
|
||||||
|
float timeLength;
|
||||||
|
|
||||||
|
timeLength = be_plain_font -> StringWidth(timeIn);
|
||||||
|
|
||||||
|
BRect timeFrame(168.0, 87.0, 168.0+timeLength, 97.0);
|
||||||
|
|
||||||
|
fTimeIn= new BStringView(timeFrame, "time", timeIn);
|
||||||
|
|
||||||
|
AddChild(fTimeIn);
|
||||||
|
|
||||||
|
//The "Set" button:
|
||||||
|
BRect buttonFrame(247.0, 155.0, 324.0, 165.0);
|
||||||
|
fSetTimeZone = new BButton(buttonFrame, "set", "Set", new BMessage(SET_TIME_ZONE));
|
||||||
|
fSetTimeZone -> SetEnabled(false);
|
||||||
|
AddChild(fSetTimeZone);
|
||||||
|
|
||||||
|
//current time zone
|
||||||
|
getCurrentTZ();
|
||||||
|
}//ZoneView::buildView()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::ChangeRegion(BMessage *message)
|
||||||
|
{
|
||||||
|
//First: get the region name from the message:
|
||||||
|
const char *area;
|
||||||
|
message -> FindString("region",&area);
|
||||||
|
|
||||||
|
//clear listview from previous items
|
||||||
|
fCityList -> MakeEmpty();
|
||||||
|
|
||||||
|
//Enter time zones directory. Find subdir with name that matches string stored in area.
|
||||||
|
//Enter subdirectory and count the items. For each item, add a StringItem to fCityList
|
||||||
|
//Time zones directory
|
||||||
|
BDirectory zoneDir("/boot/beos/etc/timezones/");
|
||||||
|
BDirectory cityDir;
|
||||||
|
BStringItem *city;
|
||||||
|
entry_ref ref;
|
||||||
|
|
||||||
|
//locate subdirectory:
|
||||||
|
if ( zoneDir.Contains(area, B_DIRECTORY_NODE) ){
|
||||||
|
cityDir.SetTo(&zoneDir, area); //There is a subdir with a name that matches 'area'. That's the one!!
|
||||||
|
//iterate over the items in the subdir and fill the listview with stringitems:
|
||||||
|
while(cityDir.GetNextRef(&ref) == B_NO_ERROR){
|
||||||
|
city = new BStringItem(ref.name);
|
||||||
|
fCityList -> AddItem(city);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}//ZoneView::ChangeRegion()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::getCurrentTime()
|
||||||
|
{
|
||||||
|
char tmp[10];
|
||||||
|
struct tm locTime;
|
||||||
|
time_t current;
|
||||||
|
|
||||||
|
current= time(0);
|
||||||
|
locTime= *localtime(¤t);
|
||||||
|
|
||||||
|
strftime(tmp, 10, "%I:%M %p", &locTime);
|
||||||
|
|
||||||
|
strcpy(fTimeStr, tmp);
|
||||||
|
|
||||||
|
//strftime(tmp, 10, "%z", &locTime);
|
||||||
|
|
||||||
|
//strcpy(fZoneStr,tmp);
|
||||||
|
|
||||||
|
}//ZoneView::getCurrentTime()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::getCurrentTZ()
|
||||||
|
{
|
||||||
|
|
||||||
|
BPath path;
|
||||||
|
BEntry tzLink;
|
||||||
|
char buffer[B_FILE_NAME_LENGTH];
|
||||||
|
|
||||||
|
if (find_directory(B_USER_SETTINGS_DIRECTORY, &path) == B_OK){
|
||||||
|
path.Append("timezone");
|
||||||
|
tzLink.SetTo(path.Path(), true);
|
||||||
|
tzLink.GetName(buffer);
|
||||||
|
strcpy(fZoneStr, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}//ZoneView::getCurrentTz()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::Draw(BRect rect)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BPoint tZone(170.0, 65.0);
|
||||||
|
BPoint tTime(280.0, 65.0);
|
||||||
|
|
||||||
|
//BPoint bZone(170.0, 107.0);
|
||||||
|
//BPoint bTime(280.0, 107.0);
|
||||||
|
|
||||||
|
SetHighColor(ViewColor());
|
||||||
|
SetLowColor(ViewColor());
|
||||||
|
FillRect(Bounds());
|
||||||
|
SetHighColor(0,0,0,255);
|
||||||
|
|
||||||
|
DrawString(fZoneStr, tZone);
|
||||||
|
DrawString(fTimeStr, tTime);
|
||||||
|
|
||||||
|
//DrawString(fZoneStr, bZone);
|
||||||
|
//DrawString(fTimeStr, bTime);
|
||||||
|
|
||||||
|
}//ZoneView:: Draw()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::Pulse()
|
||||||
|
{
|
||||||
|
getCurrentTime();
|
||||||
|
|
||||||
|
Draw(Bounds());
|
||||||
|
}//ZoneView:: Pulse()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::newTimeZone()
|
||||||
|
{
|
||||||
|
|
||||||
|
int32 selection;
|
||||||
|
BStringItem *item;
|
||||||
|
const char *text;
|
||||||
|
|
||||||
|
selection = fCityList -> CurrentSelection();
|
||||||
|
item = (BStringItem *)fCityList -> ItemAt(selection);
|
||||||
|
text = item -> Text();
|
||||||
|
strcpy(fZoneStr, text);
|
||||||
|
Draw(Bounds());
|
||||||
|
fSetTimeZone -> SetEnabled(true);
|
||||||
|
}//ZoneView::newTimeZone()
|
||||||
|
|
||||||
|
void
|
||||||
|
ZoneView::setTimeZone()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
set time based on supplied timezone. How to do this?
|
||||||
|
replace symlink, "timezone", in B_USER_SETTINGS_DIR with a link to the new timezone
|
||||||
|
*/
|
||||||
|
|
||||||
|
fSetTimeZone -> SetEnabled(false);
|
||||||
|
} //ZoneView::setTimeZone()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
ZoneView.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ZONE_VIEW_H
|
||||||
|
#define ZONE_VIEW_H
|
||||||
|
|
||||||
|
class ZoneView : public BView
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ZoneView(BRect frame);
|
||||||
|
void ChangeRegion(BMessage *region);
|
||||||
|
void setTimeZone();
|
||||||
|
void newTimeZone();
|
||||||
|
virtual void Pulse();
|
||||||
|
virtual void Draw(BRect updateRect);
|
||||||
|
private:
|
||||||
|
void buildView();
|
||||||
|
void getCurrentTime();
|
||||||
|
void getCurrentTZ();
|
||||||
|
|
||||||
|
|
||||||
|
BPopUpMenu *fZonePopUp;
|
||||||
|
BListView *fCityList;
|
||||||
|
BButton *fSetTimeZone;
|
||||||
|
char fTimeStr[10];
|
||||||
|
char fZoneStr[B_FILE_NAME_LENGTH];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user