Question Arises: What
is Save Ringtone Task?
This concept allows to
access to the user whereby enabling to save the ringtone on system.
So, let's get it started
off now.
The Complete Code of IService1.cs looks like
this:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Runtime.Serialization;
using
System.ServiceModel;
using
System.ServiceModel.Web;
using
System.Text;
namespace
Save_Ringtone_WCF
{
// NOTE: You can use the "Rename" command on the "Refactor"
menu to change the interface name "IService1" in both code and config file
together.
[ServiceContract]
public interface
IService1
{
[OperationContract]
string DisplayName(string
a);
[OperationContract]
string URI();
}
}
The Complete Code of Service1.svc.cs looks
like this:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Runtime.Serialization;
using
System.ServiceModel;
using
System.ServiceModel.Web;
using
System.Text;
namespace
Save_Ringtone_WCF
{
// NOTE: You can use the "Rename" command on the "Refactor"
menu to change the class name "Service1" in code, svc and config file together.
public class
Service1 : IService1
{
public string
DisplayName(string a)
{
return
"" + a;
}
public
string URI()
{
return
"";
}
}
}
The Complete Code of Web.Config looks like
this:
<?xml
version="1.0"?>
<configuration>
<system.web>
<compilation
debug="true"
targetFramework="4.0"
/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid
disclosing metadata information, set the value below to false and remove the
metadata endpoint above before deployment
-->
<serviceMetadata
httpGetEnabled="true"/>
<!--
To receive exception details in faults for debugging purposes, set the value
below to true. Set to false before deployment to avoid disclosing exception
information -->
<serviceDebug
includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment
multipleSiteBindingsEnabled="true"
/>
</system.serviceModel>
<system.webServer>
<modules
runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
The Complete Code of MainPage.xaml looks like
this:
<phone:PhoneApplicationPage
x:Class="Save_Ringtone_Task.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="480"
d:DesignHeight="768"
FontFamily="{StaticResource
PhoneFontFamilyNormal}"
FontSize="{StaticResource
PhoneFontSizeNormal}"
Foreground="{StaticResource
PhoneForegroundBrush}"
SupportedOrientations="Portrait"
Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot
is the root grid where all page content is placed-->
<Grid
x:Name="LayoutRoot"
Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition
Height="Auto"/>
<RowDefinition
Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel
contains the name of the application and page title-->
<StackPanel
x:Name="TitlePanel"
Grid.Row="0"
Margin="12,17,0,28">
<TextBlock
x:Name="ApplicationTitle"
Text="Vijay's Save
Ringtone Task" FontFamily="Verdana"
FontSize="22"
Style="{StaticResource
PhoneTextNormalStyle}"/>
<TextBlock
x:Name="PageTitle"
Text="Windows 7 Phone"
Margin="9,-7,0,0" Style="{StaticResource
PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel
- place additional content here-->
<Grid
x:Name="ContentPanel"
Grid.Row="1"
Margin="12,0,12,0">
<Button
Content="Save"
Height="72"
HorizontalAlignment="Left"
Margin="157,157,0,0"
Name="button1"
VerticalAlignment="Top"
Width="160"
Click="button1_Click"
/>
<TextBlock
Height="30"
HorizontalAlignment="Left"
Margin="69,25,0,0"
Name="textBlock1"
FontFamily="Verdana"
FontSize="22"
Text="Please Enter
Ringtone Name" VerticalAlignment="Top"
/>
<TextBox
Height="72"
HorizontalAlignment="Left"
Margin="105,61,0,0"
Name="textBox1"
VerticalAlignment="Top"
Width="261"
/>
</Grid>
</Grid>
<!--Sample
code showing usage of ApplicationBar-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar
IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png"
Text="Button 1"/>
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png"
Text="Button 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="MenuItem 1"/>
<shell:ApplicationBarMenuItem Text="MenuItem 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
The Complete Code of MainPage.xaml.cs looks
like this:
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Net;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Animation;
using
System.Windows.Shapes;
using
Microsoft.Phone.Controls;
using
Microsoft.Phone.Tasks;
using
Save_Ringtone_Task.ServiceReference1;
namespace
Save_Ringtone_Task
{
public partial
class MainPage
: PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private
void button1_Click(object
sender, RoutedEventArgs e)
{
if (textBox1.Text ==
"")
{
}
else
{
Service1Client objClient = new
Service1Client();
objClient.DisplayNameCompleted += new
EventHandler<DisplayNameCompletedEventArgs>(DisplayCall);
objClient.DisplayNameAsync(textBox1.Text);
objClient.URICompleted += new
EventHandler<URICompletedEventArgs>(URICall);
objClient.URIAsync();
}
}
static void
DisplayCall(object sender,
DisplayNameCompletedEventArgs e)
{
SaveRingtoneTask objRingTask = new
SaveRingtoneTask();
objRingTask.DisplayName = e.Result;
// objRingTask.Show();
}
static void
URICall(object sender, URICompletedEventArgs e)
{
SaveRingtoneTask objURITask = new
SaveRingtoneTask();
objURITask.Source = new
Uri("/nokialumia.mp3");
objURITask.Show();
}
}
}
The Output of the Application looks like
this:
The Nothing Entered Output of the Application
looks like this:
I hope this article is
useful for you.